【发布时间】:2017-02-20 12:20:17
【问题描述】:
如何将表示自纪元 (1970) 以来的天数的序列日期数转换为相应的日期字符串?我已经看到多篇文章展示了如何从字符串到日期编号,但我找不到任何关于如何进行反向操作的文章。
例如,15951 对应于"2013-09-02"。
>>> import datetime
>>> (datetime.datetime(2013, 9, 2) - datetime.datetime(1970,1,1)).days + 1
15951
(+ 1 因为无论生成这些日期数字都遵循 1970 年 1 月 1 日 = 1 的约定。)
TL;DR:正在寻找执行以下操作的方法:
>>> serial_date_to_string(15951) # arg is number of days since 1970
"2013-09-02"
这与 Python: Converting Epoch time into the datetime 不同,因为我从 1970 年以来的天数开始。由于闰秒等原因,我不确定您是否可以乘以 86,400。
【问题讨论】:
-
我也愿意接受 bash shell 脚本解决方案。
-
使用:
datetime.datetime(1970, 1, 1, 0, 0) + datetime.timedelta(15951) -
感谢@SSNR - 这行得通:
datetime.datetime(1970,1,1) + datetime.timedelta(15951 - 1) -
您也可以使用
epoch = datetime.datetime.utcfromtimestamp(0)来获取纪元日期时间,而不是硬编码。然后关注@SSNR
标签: python date datetime epoch