1

谁能告诉我为什么时区返回为“山地夏令时间”而不是 MST ?

import time

print time.strftime( "%H:%M %A %Z %d %b %y")
4

3 回答 3

3

根据您提出的另一个问题,我猜您正在使用 Windows。

在 Windows 上,strftime("%Z")显示位于注册表中此键的DaylightName或值: 。显示哪个(当然)取决于夏令时是否有效。如果更改这些设置,则必须重新启动它们才能生效。StandardNameHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

在 Linux 上,我相信(大约 80% 肯定 :-)strftime使用它在/etc/localtime. 在 Ubuntu 上,您使用dpkg-reconfigure tzdata. 在 Linux 上,%Z显示时区(例如,我的现在显示'EDT'%z显示与 UTC 的偏移量(例如,我的现在显示'-0400'

于 2012-05-10T19:58:52.263 回答
0

我在使用 Windows 时遇到了同样的问题。作为 4 个美国时区的快速而肮脏的解决方案,您可以简单地从时区字符串中删除所有不是大写字母的字符:

    abbreviated_tz_str = re.sub(r'[^A-Z]', '', multiplatform_tz_str )

举个例子,下面是我如何将时间戳变成一个漂亮的字符串:

    import re
    import time

    def nice_str( timestamp ):
        dt_str    = time.strftime( "%m/%d/%Y %I:%M:%S %p", time.localtime( timestamp ) )
        tz_str    = time.strftime( "%Z", time.localtime( timestamp ) )
        final_str = "%s (%s)" % ( dt_str, re.sub(r'[^A-Z]', '', tz_str ) )
        return( final_str )

所以:

    print( nice_str( 1425917368 ) )

显示:

    03/09/2015 09:09:28 AM (PDT)

它可以工作,即使在 Windows 上也是如此。

于 2015-03-09T16:16:54.120 回答
0

您的代码似乎是正确的

import time

print time.strftime( "%H:%M %A %Z %d %b %y")

#=> 13:54 Thursday CDT 10 May 12

你运行的是哪个版本的python?

于 2012-05-10T18:55:14.693 回答