我试图理解时代的本质及其行为。下面我用2个不同的时区特定的日期时间和1个天真的日期时间尝试了相同的日期
import time
import pytz
from datetime import datetime, timedelta
pst = pytz.timezone('America/Los_Angeles')
t = datetime(year=2015, month=2, day=2)
t = pst.localize(t)
time.mktime(t.timetuple())
# outputs 1422864000.0
utc = pytz.utc
k = datetime(year=2015, month=2, day=2)
k = utc.localize(k)
time.mktime(k.timetuple())
# outputs 1422864000.0
o = datetime(year=2015, month=2, day=2)
time.mktime(o.timetuple())
# outputs 1422864000.0
它们都有相同的纪元,但这是令人惊讶的,因为pst中的同一日期应该用7小时来表示utc。有人能解释一下吗?
谢谢
time.mktime()
返回相同的结果,因为它在所有三种情况下都接收几乎相同的输入(~isdst
):.timetuple()
不存储utc偏移量。它相当于原始的datetime
对象。一般来说,“epoch”即“seconds since epoch”并不依赖于时区。现在既不是当地时间也不是世界时。知道时间戳后,您可以相应地使用
datetime.fromtimestamp
和datetime.utcfromtimestamp
来获取时间戳。如果本地时区与
'America/Los_Angeles'
(不同的utc偏移量)不同,则所有三个时间实例都不同,因此所有三个POSIX时间戳都不同:最后一个调用可以在内部使用
mktime(naive.timetuple())
。输出
注意:这三个时间戳都不同。
要在较旧的Python版本上获取POSIX时间戳,请参见this answer。
相关问题 更多 >
编程相关推荐