私が使用した:utctime = datetime.datetime(1601,1,1) + datetime.timedelta(microseconds = tup[5]) last_visit_time = "Last visit time:"+ utctime.strftime('%Y-%m-%d %H:%M:%S')
しかし、私は1601の時間があるので、エラーが表示されます:ValueError: year=1601 is before 1900; the datetime strftime() methods require year >= 1900
私はpython2.7を使用しましたが、どうすれば作成できますか?どうもありがとう!
次のことができます。
>>> utctime.isoformat()
'1601-01-01T00:00:00.000050'
上記とまったく同じ形式にしたい場合:
iso = utctime.isoformat()
tokens = iso.strip().split("T")
last_visit_time = "Last visit time: %s %s" % (tokens[0], tokens[1].strip().split(".")[0])
この動作を修正するstrftime
のパッチがあるようではない here (テストされていません)
isoformat
メソッドは、その表現で日付時刻objの時刻部分から日付部分を分割する文字を指定するパラメーターを受け入れます。したがって:
>>> utctime.isoformat(" ")
'1601-01-01 00:00:00.000050'
それを行う必要があります。さらに、マイクロ秒を削除したい場合は、スプリットを操作できます。
>>> utctime.isoformat(" ").split(".")[0]
'1601-01-01 00:00:00'
strftime
を変更して1900年より前の日付を処理するには、さまざまな方法があります。
strftime
メソッドが提供されます:aspn_recipe.strftime(dt, fmt)
自分でモジュールに設定した場合1.5
_以降、 virtualtime パッケージは_time.strftime
_と_datetime.datetime.strftime
_の両方にパッチを適用し、Python _3.3
_ +。他の仮想時間関数を有効にしなくてもこれを利用できます(免責事項:私はこのパッケージに取り組んでいます)Python _2.7
_、_3.0
_および_3.1
_には、1900年より前にエラーがあることに注意してください。Python _3.2
_には、1000年より前のエラーがあります。さらに、pre _3.2
_バージョンは、_0
_と_99
_の間の年を_1969
_と_2068
_の間として解釈します。Python _3.3
_以降のバージョンは、datetime
のすべての正の年(および_time.strftime
_の負の年)をサポートし、_time.strftime
_は、 _0
_と_99
_の間の年。
オリジナルの Pythonバグ は、これがPython 2.7の機能であると判断したことを説明しています(おそらく、これらの日付に対するシステムstrftime
サポートの欠如を回避したためです) )、そしてPython 3シリーズでは、機能を再実装することで徐々に取り組んでいきました。
arrow (datetimeとdateutilの抽象パッケージ)を使用することをお勧めします。Python 2.6/7。 xおよび1900より前の日付。
例えば:
>>> import arrow
>>> in_date_str = "1853-10-30T13:36:41.942623+00:00"
>>> in_date_obj = arrow.get(crea)
>>> print(in_date_obj)
arrow[1853-10-30T13:36:41.942623+00:00]>
# basic formatting
>>> in_date_obj.format()
u'1853-10-30 13:36:41-00:00'
# advanced formatting
>>> in_date_obj.format("dddd D MMMM YYYY", "fr_FR")
u'Dimanche 30 Octobre 1853'
# humanized delta
>>> in_date_obj.humanize()
u'162 years ago'
# easy localization handling
>>> in_date_obj.humanize(locale="fr_FR")
u'il y a 162 ans'