time_orign_epoch应该是1970-01-01 00:00:00,为什么我要再来5:30?
time_origin_epoch = datetime.datetime.fromtimestamp(0)
print time_origin_epoch
1970-01-01 05:30:00
答案 0 :(得分:2)
因为你住在印度!
我是怎么知道的?
嗯,时间戳为0表示1970-01-01 00:00:00 UTC。由于您的输出显示为05:30:00,因此您的时区为UTC + 05:30。印度是世界上为数不多的几个时区之一,时区偏移不是一个整数小时。
使用fromtimestamp()
在Python中构建日期时间时,默认情况下使用本地时区进行转换。这相当于调用经典C函数localtime()
而不是gmtime()
。
答案 1 :(得分:0)
运行代码会给我一个比它应该落后五个小时的结果。这与我在美国东部时间并且比UTC晚了五个小时的事实是一致的。 如果你只是想确认正确的输出,那么检查你的时区,我猜你是在东亚的某个地方。但是,如果您需要程序本身产生的零值,请尝试从程序中将时区重置为UTC,然后再次运行该代码段。
来自this回答:
如果您使用的是Unix,则可以使用time.tzset来更改进程的本地时区:
import os
import time
os.environ['TZ'] = tz
time.tzset()
然后,您可以使用
将日期时间字符串转换为NumPy datetime64' sdef using_tzset(date_strings, tz):
os.environ['TZ'] = tz
time.tzset()
return np.array(date_strings, dtype='datetime64[ns]')