python 日期 unix 丢失 1 天
python date unix 1 day is lost
有一天我在提取时 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)
2018 年夏令时开始于 2018 年 3 月 11 日上午 2:00。因此这一天不是 86400
秒。
如您所见,减去 86400
秒并不是计算天数差异的好方法。一般来说,由于时区、夏令时和闰年等原因,所有 date/time "math" 运算都比简单的乘法和加法复杂一点。
更好的方法是使用库,例如 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
有一天我在提取时 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)
2018 年夏令时开始于 2018 年 3 月 11 日上午 2:00。因此这一天不是 86400
秒。
如您所见,减去 86400
秒并不是计算天数差异的好方法。一般来说,由于时区、夏令时和闰年等原因,所有 date/time "math" 运算都比简单的乘法和加法复杂一点。
更好的方法是使用库,例如 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