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

    1. <tfoot id='stfLb'></tfoot>

    2. <small id='stfLb'></small><noframes id='stfLb'>

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

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

        时间:2023-06-06
          1. <tfoot id='FiGe7'></tfoot>

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

                  <legend id='FiGe7'><style id='FiGe7'><dir id='FiGe7'><q id='FiGe7'></q></dir></style></legend>

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

                • 本文介绍了如何在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中显示区域设置敏感时间格式而无需秒的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

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

                  相关文章

                    • <bdo id='mmBq2'></bdo><ul id='mmBq2'></ul>
                    <legend id='mmBq2'><style id='mmBq2'><dir id='mmBq2'><q id='mmBq2'></q></dir></style></legend>
                  1. <tfoot id='mmBq2'></tfoot>

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

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