在python中将datetime转换为ordinal失败

时间:2016-12-07 23:59:28

标签: python python-3.x datetime

我曾与日期合作过。我想将日期时间转换为序数,但我的脚本失败了。

from datetime import datetime

date = "2016/12/07 17:45"
date_strip = datetime.strptime(date, '%Y/%m/%d %H:%M').date()
ordinal = date_strip.toordinal()
# ordinal = 736305
normal_date = datetime.fromordinal(ordinal)
# normal_date = 2016-12-07 00:00:00 not 2016-12-07 17:45:00

怎么了?他们会帮我吗?

2 个答案:

答案 0 :(得分:0)

因为ordinal只存储日期。序数不能包含时间:

  

日期的公历序数,其中第1年1月1日有序数1.对于任何日期对象d,date.fromordinal(d.toordinal())== d。

如果您想转换为时间戳而非时间戳,请尝试使用此so answer

答案 1 :(得分:0)

datetime.date()以相同的年,月和日返回date个对象,但不返回小时,分钟和秒,即日分辨率。它可以在下面很容易地看到。

>>> from datetime import datetime
>>> s = "2016/12/07 17:45"
>>> d = datetime.strptime(s, '%Y/%m/%d %H:%M').date()
>>> type(d)
<type 'datetime.date'>

请注意,datetime.toordinalself.date().toordinal()相同。

>>> from datetime import datetime
>>> dt = datetime.strptime('2016/12/07 17:45', '%Y/%m/%d %H:%M')
>>> dt.toordinal() == dt.date().toordinal()
True