使用 DateTime python 计算 UTC +0 的午夜时间戳 3.5
Compute midnight timestamp in UTC +0 using DateTime python 3.5
我需要使用包含时间戳的 API 查询以固定间隔删除包含 +/- 24 小时数据的在线数据库。因为我不知道服务器在哪里,所以选择像 midnigth UTC 这样简单的东西。
我找到了很多关于 SO 的文档来计算本地区域的 UTC。我实际上是在使用这个协议来获取实际的 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()
returned 考虑当地时区:1499523264.137003
等于 ~16h15,所以 UTC +2
对应法国时区。为什么 timestamp()
不 return 只有 UTC + 0 时间戳?我如何获得 UTC + 0
时间戳?
第二个问题,我尝试生成一个午夜日期来查询 API,所以就像我在许多 post 上看到的那样,我尝试使用 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())
return 时,UTC + 2 时间戳,所以是 2017 年 7 月 8 日凌晨 2 点。我怎样才能轻松获得午夜 UTC + 0 时间戳?
我建议使用 pendulum 模块,因为它使时区和日期计算更容易执行。
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]>
我需要使用包含时间戳的 API 查询以固定间隔删除包含 +/- 24 小时数据的在线数据库。因为我不知道服务器在哪里,所以选择像 midnigth UTC 这样简单的东西。
我找到了很多关于 SO 的文档来计算本地区域的 UTC。我实际上是在使用这个协议来获取实际的 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()
returned 考虑当地时区:1499523264.137003
等于 ~16h15,所以 UTC +2
对应法国时区。为什么 timestamp()
不 return 只有 UTC + 0 时间戳?我如何获得 UTC + 0
时间戳?
第二个问题,我尝试生成一个午夜日期来查询 API,所以就像我在许多 post 上看到的那样,我尝试使用 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())
return 时,UTC + 2 时间戳,所以是 2017 年 7 月 8 日凌晨 2 点。我怎样才能轻松获得午夜 UTC + 0 时间戳?
我建议使用 pendulum 模块,因为它使时区和日期计算更容易执行。
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]>