2016-12-07 10 views
0

私は日付を扱っていました。私はdatetimesをordinalに変換したいが、私のスクリプトは失敗する。Pythonでdatetimeをordinalに変換すると失敗します

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 

whats wrong?彼らは私を助けてくれますか?

+0

so ...どうした?たぶん私は高密度ですが、私はここで問題を見ていないでしょう... – mgilson

+0

オリジナル= 2016/12/07 17:45序数から変換し、再変換:2016-12-07 00:00:00 –

+0

ウリエル缶あなたは私に説明してください? –

答えて

0

ordinalには日付のみが格納されているためです。

1年1月1日は、任意の日付オブジェクトd 1.序、date.fromordinal(d.toordinalを())がある日、の予期的グレゴリオ暦序== D:序は時間を含めることはできません。

序文の代わりにタイムスタンプに変換する場合は、so answerを使用してください。

+0

ありがとう、ソリューションはタイムスタンプに変換されます –

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 
+0

私は最良の方法は、タイムスタンプでdatetimeを変換すると思う –

関連する問題