• <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中显示区域设置敏感时间格式而无需秒

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

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Kivy 1.9.0 Windows package KeyError: #39;rthooks#39;(Kivy 1.9.0 Windows 包 KeyError: rthooks)
                  Python Kivy: how to call a function on button click?(Python Kivy:如何在按钮单击时调用函数?)
                  How to disable a widget in Kivy?(如何禁用 Kivy 中的小部件?)
                  Centering an object in Kivy(在 Kivy 中将对象居中)
                  How to downgrade to Python 3.4 from 3.5(如何从 Python 3.5 降级到 Python 3.4)
                  Change button or label text color in kivy(在kivy中更改按钮或标签文本颜色)
                    <tbody id='mmBq2'></tbody>
                      • <bdo id='mmBq2'></bdo><ul id='mmBq2'></ul>
                        <legend id='mmBq2'><style id='mmBq2'><dir id='mmBq2'><q id='mmBq2'></q></dir></style></legend>
                      • <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'>