关于python:将纪元以来的日期转换为日期

Converting days since epoch to date

如何将表示自纪元(1970年)以来的天数的序列日期编号转换为相应的日期字符串? 我看过多个帖子显示如何从字符串到日期编号,但我无法找到任何关于如何反向的帖子。

例如,15951对应于"2013-09-02"

1
2
3
>>> import datetime
>>> (datetime.datetime(2013, 9, 2) - datetime.datetime(1970,1,1)).days + 1
15951

(+ 1因为无论生成这些日期数是否遵循1970年1月1日= 1的惯例。)

TL; DR:寻找要做的事情:

1
2
>>> serial_date_to_string(15951)  # arg is number of days since 1970
"2013-09-02"

这与Python不同:将大纪元时间转换为日期时间,因为我从1970年以来的几天开始。我不确定你是否可以因闰秒等而乘以86,400等。


使用datetime包,如下所示:

1
2
3
4
import datetime
def serial_date_to_string(srl_no):
    new_date = datetime.datetime(1970,1,1,0,0) + datetime.timedelta(srl_no - 1)
    return new_date.strftime("%Y-%m-%d")

这是一个根据需要返回字符串的函数。

所以:

1
serial_date_to_string(15951)

返回

1
>>"2013-09-02"