<tfoot id='LQqbb'></tfoot>

<legend id='LQqbb'><style id='LQqbb'><dir id='LQqbb'><q id='LQqbb'></q></dir></style></legend>
    • <bdo id='LQqbb'></bdo><ul id='LQqbb'></ul>

    1. <small id='LQqbb'></small><noframes id='LQqbb'>

        <i id='LQqbb'><tr id='LQqbb'><dt id='LQqbb'><q id='LQqbb'><span id='LQqbb'><b id='LQqbb'><form id='LQqbb'><ins id='LQqbb'></ins><ul id='LQqbb'></ul><sub id='LQqbb'></sub></form><legend id='LQqbb'></legend><bdo id='LQqbb'><pre id='LQqbb'><center id='LQqbb'></center></pre></bdo></b><th id='LQqbb'></th></span></q></dt></tr></i><div id='LQqbb'><tfoot id='LQqbb'></tfoot><dl id='LQqbb'><fieldset id='LQqbb'></fieldset></dl></div>

        如何在python中显示区域设置敏感时间格式而无需

        时间:2023-10-08
          • <bdo id='xp1Hz'></bdo><ul id='xp1Hz'></ul>

          • <legend id='xp1Hz'><style id='xp1Hz'><dir id='xp1Hz'><q id='xp1Hz'></q></dir></style></legend>
            <i id='xp1Hz'><tr id='xp1Hz'><dt id='xp1Hz'><q id='xp1Hz'><span id='xp1Hz'><b id='xp1Hz'><form id='xp1Hz'><ins id='xp1Hz'></ins><ul id='xp1Hz'></ul><sub id='xp1Hz'></sub></form><legend id='xp1Hz'></legend><bdo id='xp1Hz'><pre id='xp1Hz'><center id='xp1Hz'></center></pre></bdo></b><th id='xp1Hz'></th></span></q></dt></tr></i><div id='xp1Hz'><tfoot id='xp1Hz'></tfoot><dl id='xp1Hz'><fieldset id='xp1Hz'></fieldset></dl></div>
            <tfoot id='xp1Hz'></tfoot>

              <small id='xp1Hz'></small><noframes id='xp1Hz'>

                    <tbody id='xp1Hz'></tbody>
                  本文介绍了如何在python中显示区域设置敏感时间格式而无需秒的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我可以使用 strftime('%X') 输出区域敏感的时间格式,但这总是包括秒.我如何在没有秒的情况下显示这种时间格式?

                  I can output a locale sensitive time format using strftime('%X'), but this always includes seconds. How might I display this time format without seconds?

                  >>> import locale
                  >>> import datetime
                  >>> locale.setlocale(locale.LC_ALL, 'en_IE.utf-8')
                  'en_IE.utf-8'
                  >>> print datetime.datetime.now().strftime('%X')
                  12:22:43
                  >>> locale.setlocale(locale.LC_ALL, 'zh_TW.utf-8')
                  'zh_TW.utf-8'
                  >>> print datetime.datetime.now().strftime('%X')
                  12時22分58秒
                  

                  我能想到的唯一方法是尝试解析 locale.nl_langinfo(locale.T_FMT) 的输出并去除秒位,但这会带来自己的诡计.

                  The only way I can think of doing this is attempting to parse the output of locale.nl_langinfo(locale.T_FMT) and strip out the seconds bit, but that brings it's own trickery.

                  >>> print locale.nl_langinfo(locale.T_FMT)
                  %H時%M分%S秒
                  >>> locale.setlocale(locale.LC_ALL, 'en_IE.utf-8')
                  'en_IE.utf-8'
                  >>> print locale.nl_langinfo(locale.T_FMT)
                  %T
                  

                  <小时>

                  解决方案:

                  (基于pixelbeat的回答.)


                  Solution:

                  (Based on pixelbeat's answer.)

                  # -*- coding: utf-8 -*-
                  import locale
                  def locale_time(t, show_seconds=False):
                      if show_seconds:
                          return t.strftime('%X')
                      replacement_fmts = [
                          (u'.%S', u''),
                          (u':%S', u''),
                          (u',%S', u''),
                          (u':%OS', ''),
                          (u'ཀསར་ཆ%S', u''),
                          (u' %S초', u''),
                          (u'%S秒', u''),
                          (u'%r', '%I:%M %p'),
                          (u'%t', '%H:%M'),
                          (u'%T', '%H:%M')
                      ]
                      enc=locale.getpreferredencoding(do_setlocale=False)
                      t_fmt = locale.nl_langinfo(locale.T_FMT).decode(enc)
                      for fmt in replacement_fmts:
                          new_t_fmt = t_fmt.replace(*fmt)
                          if new_t_fmt != t_fmt:
                              return t.strftime(new_t_fmt.encode(enc))
                      return t.strftime(t_fmt.encode(enc)
                  

                  用法:

                  >>> locale.setlocale(locale.LC_ALL, 'en_IE.utf-8')
                  'en_IE.utf-8'
                  >>> print locale_time(t)
                  15:47
                  >>> locale.setlocale(locale.LC_ALL, 'zh_TW.utf-8')
                  'zh_TW.utf-8'
                  >>> print locale_time(t)
                  15時47分
                  

                  推荐答案

                  我会建议对返回的 T_FMT 进行特殊封装,因为实际上没有那么多需要考虑:

                  I would suggest special casing the returned T_FMT as there aren't that many to consider really:

                  $ for l in $(locale -a | grep utf8); do locale | cut -d= -f1 | LANG=$l xargs locale -kc | grep ^t_fmt=; done | sort -u
                  
                  t_fmt="%H:%M:%S"
                  t_fmt="%H.%M.%S"
                  t_fmt="%H시 %M분 %S초"
                  t_fmt="ཆུ་ཚོད%Hཀསར་མ%Mཀསར་ཆ%S"
                  t_fmt="%H时%M分%S秒"
                  t_fmt="%H时%M分%S秒 %Z"
                  t_fmt="%H時%M分%S秒"
                  t_fmt="%I.%M.%S %p"
                  t_fmt="%I:%M:%S  %Z"
                  t_fmt="%I:%M:%S %Z"
                  t_fmt="%I.%M.%S. %Z"
                  t_fmt="%I時%M分%S秒 %Z"
                  t_fmt="kl. %H.%M %z"
                  t_fmt="%k,%M,%S"
                  t_fmt="%k:%M:%S"
                  t_fmt="%l:%M:%S"
                  t_fmt="%OH:%OM:%OS"
                  t_fmt="%OI:%OM:%OS %p"
                  t_fmt="%p%I.%M.%S %Z"
                  t_fmt="%r"
                  t_fmt="%t"
                  t_fmt="%T"
                  t_fmt="%Z %I:%M:%S "
                  

                  这篇关于如何在python中显示区域设置敏感时间格式而无需秒的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:在 groupby 聚合之后指定列顺序 下一篇:在python中按可变长度格式化

                  相关文章

                  最新文章

                  • <bdo id='Nzp7L'></bdo><ul id='Nzp7L'></ul>

                    <small id='Nzp7L'></small><noframes id='Nzp7L'>

                  1. <i id='Nzp7L'><tr id='Nzp7L'><dt id='Nzp7L'><q id='Nzp7L'><span id='Nzp7L'><b id='Nzp7L'><form id='Nzp7L'><ins id='Nzp7L'></ins><ul id='Nzp7L'></ul><sub id='Nzp7L'></sub></form><legend id='Nzp7L'></legend><bdo id='Nzp7L'><pre id='Nzp7L'><center id='Nzp7L'></center></pre></bdo></b><th id='Nzp7L'></th></span></q></dt></tr></i><div id='Nzp7L'><tfoot id='Nzp7L'></tfoot><dl id='Nzp7L'><fieldset id='Nzp7L'></fieldset></dl></div>

                    <tfoot id='Nzp7L'></tfoot>
                  2. <legend id='Nzp7L'><style id='Nzp7L'><dir id='Nzp7L'><q id='Nzp7L'></q></dir></style></legend>