我需要使用包含时间戳的API查询来废弃一个在固定时间间隔内包含+/- 24h数据的在线数据库。因为我不知道服务器在哪里选择像midnigth UTC这样简单的东西。
我在SO上发现了很多关于计算UTC感知本地区域的文档。我实际上使用这个protocole来获得实际的UTC日期:
import datetime
myDate = datetime.datetime.now(datetime.timezone.utc)
print("TZ INFO = ", myDate.tzinfo) # return UTC+00:00
print("DATE ", myDate) # return 2017-07-08 14:14:24.137003+00:00
print("ISO DATE = ", myDate.timestamp()) # return 1499523264.137003
第一个问题,timestamp()
返回的原因考虑了当地时区:1499523264.137003
等于~16h15,因此UTC +2
对应于法国区。为什么timestamp()
不返回UTC + 0时间戳?我怎样才能获得UTC + 0
时间戳?
第二个问题,我尝试生成一个午夜日期来查询API,就像我在很多帖子上看到的那样,我尝试使用replace()
函数:
myDate = myDate.replace(hour=0, minute=0, second=0,microsecond=0).astimezone(pytz.utc)
print (myDate) # return 2017-07-08 00:00:00+00:00
但是当我尝试print (myDate.timestamp())
再次返回UTC + 2时间戳时,2017-07-08凌晨2点。我怎样才能轻松获得午夜UTC + 0时间戳?
答案 0 :(得分:0)
我建议使用pendulum模块,因为它可以轻松执行时区和日期计算。
钟摆知道夏令时计划,如伦敦和巴黎所示。它还可以提供夏令时调整的UTC时间。当您需要对UTC进行调整时,您只需将replace
方法与UTC结合使用即可。
>>> import pendulum
>>> pendulum.create(2017,7,9,0,0,0,0,'Europe/London')
<Pendulum [2017-07-09T00:00:00+01:00]>
>>> pendulum.create(2017,7,9,0,0,0,0,'Europe/Paris')
<Pendulum [2017-07-09T00:00:00+02:00]>
>>> pendulum.create(2017,7,9,0,0,0,0,'UTC')
<Pendulum [2017-07-09T00:00:00+00:00]>
>>> t = pendulum.create(2017,7,9,0,0,0,0,'UTC')
>>> t.replace(hour=+2)
<Pendulum [2017-07-09T02:00:00+00:00]>