In [1]: import datetime
In [2]: s = '2012265'
In [3]: datetime.datetime.strptime(s, '%Y%j')
Out[3]: datetime.datetime(2012, 9, 21, 0, 0)
In [4]: d = '41213'
In [5]: datetime.date(1900, 1, 1) + datetime.timedelta(int(d))
Out[5]: datetime.date(2012, 11, 2)
import datetime
EXCEL_DATE_SYSTEM_PC=1900
EXCEL_DATE_SYSTEM_MAC=1904
i = 42129 # Excel number for 5-May-2015
d = datetime.date(EXCEL_DATE_SYSTEM_PC, 1, 1) + datetime.timedelta(i-2)
您可以尝试以下操作:
第一个比较复杂,但它使用
%j
参数来解释您提供的一年中的哪一天(在四位数年份之后,用%Y
表示)。第二个是1900年1月1日以来的天数。这是一般的转换-不确定你的输入格式,但希望这可以调整,以适应它。
在Excel integer to Python datetime位上:
请注意,有两个Excel日期系统(一个基于1900年1月1日,另一个基于1904年1月1日);有关详细信息,请参见https://support.microsoft.com/en-us/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel。
还要注意,系统不是基于零的。因此,在1900系统中,1900年1月1日是第一天(而不是第0天)。
这两种格式似乎都很容易使用。第一个,事实上,只是一个整数,你为什么不这样做呢?
对于第二个,细节取决于格式的确切定义(例如,即使天数少于100天,您是否总是希望在一年之后出现3位数字,或者是否有可能出现2位或1位数字?如果是,年份是否总是4位数字?)但一旦你把那部分搞定了,就可以做得非常相似。
相关问题 更多 >
编程相关推荐