提取一天时,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)
答案 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