我曾与日期合作过。我想将日期时间转换为序数,但我的脚本失败了。
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
怎么了?他们会帮我吗?
答案 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.toordinal
与self.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