Get timezone used by datetime.datetime.fromtimestamp()
有没有可能,如果有,如何获得由
例如,使用日期2008-12-27午夜UTC(自纪元起40*356*86400秒):
1 2 | >>> datetime.datetime.fromtimestamp(40 * 356 * 86400) datetime.datetime(2008, 12, 27, 1, 0) |
这个时间戳在早上1点被转换成一个
1 2 | >>> datetime.datetime.fromtimestamp((40 * 356 + 100) * 86400) datetime.datetime(2009, 4, 6, 2, 0) |
早上两点。这是因为到那时,DST处于活动状态。
我原以为
本地时区过去可能有不同的UTC偏移量。在一些提供历史时区数据库访问的系统上,
要获取
1 | utc_offset = fromtimestamp(ts) - utcfromtimestamp(ts) |
另请参见,获取计算机在python中的UTC偏移量。
从python文档中:
classmethod
datetime .fromtimestamp (timestamp, tz=None )Return the local date and time corresponding to the POSIX timestamp, such as is returned by
time.time() . If optional argument tz isNone or not specified, the timestamp is converted to the platform’s local date and time, and the returneddatetime object is naive.Else tz must be an instance of a class
tzinfo subclass, and the timestamp is converted to tz‘s time zone. In this case the result is equivalent totz.fromutc(datetime.utcfromtimestamp(timestamp).replace(tzinfo=tz)) .
与您的问题相关的这个描述的关键部分是,当您不指定时区时,它不仅使用本地时区,而且结果是幼稚的。你似乎想让它意识到。
这是python所做的一个特别的区别,在datetime文档的最上面就已经讨论过了。
如果您想要的是一个了解本地时区的
使用
1 2 3 4 | >>> from __future__ import print_function >>> from time import gmtime, strftime >>> print(strftime("%z", gmtime())) -0600 |
在python-2.7和python-3.3中为我的cst笔记本电脑打印-06:00还可以使用local time()获取本地时间结构。
1 2 3 4 5 6 7 8 9 | >>> from __future__ import print_function >>> from time import localtime >>> lt = localtime() >>> print(lt.tm_zone) "CDT" >>> print(lt.tm_gmtoff/(60*60)) -5.0 >>> print(lt.tm_gmtoff/(60*60) - (1 if lt.tm_isdst == 1 else 0)) # Adjusted for DST -6.0 |
希望这有帮助