Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将整数日期格式转换为可读格式_Python_Python 2.7_Python 3.x_Date - Fatal编程技术网

Python 将整数日期格式转换为可读格式

Python 将整数日期格式转换为可读格式,python,python-2.7,python-3.x,date,Python,Python 2.7,Python 3.x,Date,我有一个日期时间格式,其中日期表示为1900年1月1日的整数。 例如:1是1900年1月1日,42998是2017年9月20日 如何将此格式转换为人类可读的格式,如dd/mm/yyyy?我检查了文档,但没有找到任何方法。我想在Python3或2.7上这样做 谢谢您的建议。您可以使用datetime对象来执行此操作 import datetime d = datetime.datetime(1900, 1, 1, 0, 0) d + datetime.timedelta(days = 42998)

我有一个日期时间格式,其中日期表示为1900年1月1日的整数。 例如:1是1900年1月1日,42998是2017年9月20日

如何将此格式转换为人类可读的格式,如dd/mm/yyyy?我检查了文档,但没有找到任何方法。我想在Python3或2.7上这样做


谢谢您的建议。

您可以使用
datetime
对象来执行此操作

import datetime
d = datetime.datetime(1900, 1, 1, 0, 0)
d + datetime.timedelta(days = 42998)
>> datetime.datetime(2017, 9, 22, 0, 0)

您可以将日期定义为基准时间的偏移量,并构建日期时间:

In[22]:
import datetime as dt
dt.datetime(1900,1,1) + dt.timedelta(42998)

Out[22]: datetime.datetime(2017, 9, 22, 0, 0)
一旦它成为
datetime
对象,您可以通过
strftime
使用所需的任何格式将其转换为
str

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'

日期不应该是2017年9月21日吗?我使用excel将此数字转换为日期,它返回给我2017年9月20日。我不知道excel是如何做到这一点的,但python不同意,因为某些原因,根据我在哪里进行计算,我得到了不同的结果:同意你,这也同意python
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)