python date unix 1天丢失了

问题描述 投票:1回答:1

提取一天时,我在python中有错误。我正在转换为unix并且提取一天,但是行军的第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)
python date unix-timestamp
1个回答
2
投票

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

正如您所看到的,减去86400秒并不是计算天数差异的好方法。一般而言,所有日期/时间“数学”操作都比简单的乘法更加复杂,并且由于时区,夏令时和闰年等原因而增加。

更好的方法是使用一个库,例如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
© www.soinside.com 2019 - 2024. All rights reserved.