python date unix 1天丢失

时间:2018-09-07 15:37:30

标签: python date unix-timestamp

提取一天时,python中出现错误。我要转换为Unix并提取一天,但是3月11日-无论数据集有多大,总是会丢失。谁能告诉我这是什么错误?

from time import localtime, mktime, strptime, strftime
day = str(20180313)
one_day = 86400
for i in range(1,5):
    print(day)
    previous_day_unix = int( mktime( strptime( day, "%Y%m%d")))-one_day
    day = strftime("%Y%m%d", localtime(int(previous_day_unix)))
    print(day)

1 个答案:

答案 0 :(得分:2)

夏令时2018从2018年3月11日凌晨2:00开始。因此这一天不是86400秒。

如您所见,减去86400秒并不是计算天数差异的好方法。通常,由于时区,夏令时和leap年等因素,所有日期/时间“算术”运算都比简单的乘法和加法复杂一些。

一种更好的方法是使用一个库,例如datetime,它可以为您处理所有这些事情:

from datetime import datetime, timedelta
day = str(20180313)
for i in range(1, 5):
    print(day)
    previous_day = (datetime.strptime(day, "%Y%m%d") - timedelta(days=1))
    day = previous_day.strftime("%Y%m%d")
#20180313
#20180312
#20180311
#20180310