将纪元以来的天数转换为日期
Converting days since epoch to date
如何将表示自纪元 (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
使用datetime
包如下:
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")
这是一个returns需要字符串的函数。
所以:
serial_date_to_string(15951)
Returns
>> "2013-09-02"
对于 Pandas 数据框:
df["date"] = pd.to_datetime(df["date"], unit="d")
...假设“日期”列包含像 18687
这样的值,它是从 1970-01-01
的 Unix 纪元到 2021-03-01
.
的天数
还处理自 Unix Epoch 以来的秒数和毫秒数,分别使用 unit="s"
和 unit="ms"
。
另见我的。
如何将表示自纪元 (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
使用datetime
包如下:
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")
这是一个returns需要字符串的函数。
所以:
serial_date_to_string(15951)
Returns
>> "2013-09-02"
对于 Pandas 数据框:
df["date"] = pd.to_datetime(df["date"], unit="d")
...假设“日期”列包含像 18687
这样的值,它是从 1970-01-01
的 Unix 纪元到 2021-03-01
.
还处理自 Unix Epoch 以来的秒数和毫秒数,分别使用 unit="s"
和 unit="ms"
。
另见我的