我有一个日期时间格式,其中日期从19/1年1月1日起表示为整数。 例如:1是1/1/1900,42998是20/9/2017。
如何将此格式转换为dd / mm / yyyy等人类可读格式?我检查了datetime文档,但我没有找到任何方法来执行此操作。我想在python 3或2.7上执行此操作。
感谢您的任何建议。
答案 0 :(得分:2)
您可以将日期定义为基准时间的偏移量并构建日期时间:
In[22]:
import datetime as dt
dt.datetime(1900,1,1) + dt.timedelta(42998)
Out[22]: datetime.datetime(2017, 9, 22, 0, 0)
一旦成为datetime
对象,您就可以使用您想要的任何格式通过str
将其转换为strftime
:
In[24]:
(dt.datetime(1900,1,1) + dt.timedelta(42998-1)).strftime('%d/%m/%Y')
Out[24]: '21/09/2017'
因此,您可以定义用户func来执行此操作:
In[27]:
def dtToStr(val):
base = dt.datetime(1900,1,1)
return (base + dt.timedelta(val-1)).strftime('%d/%m/%Y')
dtToStr(42998)
Out[27]: '21/09/2017'
答案 1 :(得分:1)
import datetime
base_date = datetime.datetime(1900, 1, 1)
convert = lambda x: base_date + datetime.timedelta(days=x-1)
>>> convert(42998)
datetime.datetime(2017, 9, 21, 0, 0)
答案 2 :(得分:0)
您可以使用datetime
对象来执行此操作。
import datetime
d = datetime.datetime(1900, 1, 1, 0, 0)
d + datetime.timedelta(days = 42998)
>> datetime.datetime(2017, 9, 22, 0, 0)