正如你可以从下面的代码片段看到的,两种方法之间有一个小时的差异。是什么原因 ?为什么datetime.utcnow()和datetime.now(timezone('UTC'))之间有区别?
from datetime import datetime
from pytz import timezone
import time
def timestamp2date(timestamp):
# function converts a UTC timestamp into Europe/Zurich Gregorian date
DATE_TIME_FORMAT = "%Y-%m-%d %H:%M:%S"
utcTimeStamp = datetime.fromtimestamp(int(timestamp)).replace(tzinfo=timezone('UTC'))
return utcTimeStamp.astimezone(timezone('Europe/Zurich')).strftime(DATE_TIME_FORMAT)
timeStampUTC_1 = time.mktime(datetime.utcnow().timetuple())
print(timeStampUTC_1)
print(timestamp2date(timeStampUTC_1))
timeStampUTC_2 = time.mktime(datetime.now(timezone('UTC')).timetuple())
print(timeStampUTC_2)
print(timestamp2date(timeStampUTC_2))
print(timeStampUTC_2 - timeStampUTC_1)
# 1504385450.0
# 2017-09-03 00:50:50 this the right time
# 1504389050.0
# 2017-09-03 01:50:50
# 3600.0
我没有在我的Windows 10笔记本电脑QPython NND我的Android智能手机,其执行的Python 3.2解释器中运行的python 3.6的代码,我获得同样的区别。我当地的时区是欧洲/苏黎世。 –
...但即使以美国/太平洋作为时区,差异也是如此。 –