Python 3.x python3时间戳关闭2小时

Python 3.x python3时间戳关闭2小时,python-3.x,datetime,time,Python 3.x,Datetime,Time,我对python有点陌生,但在处理时间戳、utc和unixtime时最困难 此示例关闭2小时: sec_in_day=86400 today = datetime.datetime.utcnow() print(today) two_days_ago=today.timestamp()-(sec_in_day*2); print("Two days ago (unix)",two_days_ago) # Convert timestamp via 3rd party tool:http:

我对python有点陌生,但在处理时间戳、utc和unixtime时最困难

此示例关闭2小时:

sec_in_day=86400
today = datetime.datetime.utcnow() 
print(today)

two_days_ago=today.timestamp()-(sec_in_day*2);
print("Two days ago (unix)",two_days_ago)

# Convert timestamp via 3rd party 
tool:http://www.onlineconversion.com/unix_time.htm

#generated unix-timestamp is 2 hours early according to 3rd party tool
2017-04-11 06:36:49.414133

两天前(unix)1491712609.414133

通过在线工具转换1491712609.414133

2017年4月9日星期日04:36:49 GMT


我们期待着太阳,2017年4月9日06:36:49 GMT

我相信一切都按照设计进行

首先,你要:

today = datetime.datetime.utcnow()
以UTC为单位,无夏令时调整,无本地时区调整

然后你会:

today.timestamp()
根据是当地时间,因此它包括对日光节约以及当地时区的调整

这就解释了两个小时的差异


您可能想了解的是
today-datetime.timedelta(days=2)

这解决了我的问题

sec_in_day=86400
today = datetime.datetime.utcnow() 

timestamp = today.replace(tzinfo=timezone.utc).timestamp()
print("Today",today)
print("Today-Re", today.replace(tzinfo=timezone.utc))
print("TS",timestamp)
print("TS#2",(timestamp-(sec_in_day*2)))

您也可以使用下面的代码

sec_in_day=86400
today = datetime.datetime.utcnow() 
print(today)

two_days_ago=today.timestamp()-(sec_in_day*2);

print("Two days ago (unix): ",datetime.datetime.fromtimestamp(two_days_ago).strftime('%Y-%m-%d %H:%M:%S.%f'))

在本文中,我使用了fromtimestamp(两天前)。strftime(“%Y-%m-%d%H:%m:%S.%f”)函数,该函数将历元时间转换为可读形式。

但我没有通过执行datetime.datetime.utcnow()将其转换为UCT。我如何从两天前获得UTC unixtimestamp?,utc时间戳仍然处于关闭状态,newday=today-datetime.timedelta(days=2)打印(“ND”,newday)打印(“ND”,newday.timestamp())这一切都在“注意,没有直接从表示UTC时间的原始datetime实例获取POSIX时间戳的方法。如果应用程序使用此约定,并且系统时区未设置为UTC,则可以通过提供tzinfo=timezone.UTC来获取POSIX时间戳:“也许您不应该以
.utcnow()开头
并始终使用本地时间。因此,我建议您阅读文档,体验一下
datetime的不同功能