How to display locale sensitive time format without seconds in python

前端 未结 4 452
清歌不尽
清歌不尽 2020-12-20 12:38

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?

相关标签:
4条回答
  • 2020-12-20 13:14

    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 "
    
    0 讨论(0)
  • 2020-12-20 13:21

    Consider ICU, and pyICU.

    >>> from icu import *
    >>> locale = Locale('en_US')
    >>> dtpg = DateTimePatternGenerator.createInstance(locale)
    >>> pattern = dtpg.getBestPattern('hm a')             
    >>> sdf = SimpleDateFormat(pattern, locale)           
    >>> sdf.format(1507059935.0)                  
    u'12:34 PM'
    >>> locale = Locale('de_DE')
    >>> dtpg = DateTimePatternGenerator.createInstance(locale)
    >>> pattern = dtpg.getBestPattern('hm a')             
    >>> sdf = SimpleDateFormat(pattern, locale)            
    >>> sdf.format(1507059935.0)                   
    u'12:34 nachm.'
    
    0 讨论(0)
  • 2020-12-20 13:28

    The Babel library provides an easy and reliable solution for this problem. Here is a sample code using Python 2.

    #!/usr/bin/env python2
    from datetime import datetime
    from babel.dates import format_time
    
    date_time = datetime.now()
    formatted_time = format_time(date_time, format='short', locale='en_US')
    print formatted_time
    
    0 讨论(0)
  • 2020-12-20 13:29

    This is bad solution. What happens with some new different locale?

    Use following:

    t.strftime(gettext('%H:%M'))
    

    Now each translator for each languages would provide suitable format for each string, for en_US it would be '%I:M %p', for zh_TW: %H時%M分

    This is how usually problems of missing resource in standard localization tools are solved.

    0 讨论(0)
提交回复
热议问题