12

重複の可能性:
文字列を日時に変換する

それぞれのアイソフォーマットで時間を提供する XML ファイルを解析しています。

tc1 = 2012-09-28T16:41:12.9976565
tc2 = 2012-09-28T23:57:44.6636597

しかし、XML ファイルからこれを取得すると、文字列として扱われます。私はそのような時間値を 2 つ持っており、デルタを見つけるために 2 つの間の diff を行う必要があります。でも文字列なので直接tc2-tc1はできません。しかし、それらはすでにdatetimeのアイソフォーマットになっているので、Pythonにdatetimeとして認識させるにはどうすればよいですか?

ありがとう。

4

3 に答える 3

31

datetime.strptime次の方法を使用します。

import datetime
datetime.datetime.strptime(your_string, "%Y-%m-%dT%H:%M:%S.%f")

提供されているリンクは、さまざまな形式のディレクティブを示しています。マイクロ秒は range に制限されていることに注意してください。つまり、例[0,999999]では aValueErrorが発生します (1/10us を使用しています): 最後の文字を削除するには、文字列を切り詰める必要があります。

于 2012-10-01T11:51:01.613 に答える
5

python-dateutilparse()関数を使用できます。strptimeよりも柔軟です。これがお役に立てば幸いです。

于 2012-10-01T11:51:01.333 に答える
4

datetimeモジュールを使用します。

td = datetime.strptime('2012-09-28T16:41:12.997656', '%Y-%m-%dT%H:%M:%S.%f') - 
     datetime.strptime('2012-09-28T23:57:44.663659', '%Y-%m-%dT%H:%M:%S.%f')
print td
# => datetime.timedelta(-1, 60208, 333997)

小さな問題が 1 つだけあります。マイクロ秒は%f、処理するのに 1 桁です。そのため、入力文字列から最後の桁を削除しました。

于 2012-10-01T11:50:41.177 に答える