9

このような日付を含む 2 つの文字列があります」

start_date = 'Sun Sep 16 16:05:15 +0000 2012'
end_date = 'Sun Sep 17 23:55:20 +0000 2012'

実行する必要があります:end_date - start_date 終了日と開始日を区切る秒数を返す必要があります。

このデータは、twitter api から抽出されます。これはjsonが私に与えるものです。よく使われる文字列のように見えるので、これを処理できるライブラリまたはメソッドがあると思います。私はそれを見つけることができません。ありがとう!

4

7 に答える 7

18

完全な答えは次のとおりです。

from datetime import datetime

start_date = 'Sun Sep 16 16:05:15 +0000 2012'
end_date = 'Sun Sep 17 23:55:20 +0000 2012'


def __datetime(date_str):
    return datetime.strptime(date_str, '%a %b %d %H:%M:%S +0000 %Y')

start = __datetime(start_date)
end = __datetime(end_date)

delta = end - start
print delta  # prints: 1 day, 7:50:05
print delta.total_seconds()  # prints: 114605.0
于 2012-11-08T16:25:00.123 に答える
4

あなたはどれくらい一生懸命に見えましたか?

Python のdatetimeモジュールはこの形式を解析し、結果のオブジェクトに対して演算を実行できるようにします。

サンプルコードは次のとおりです。

a = datetime.datetime.strptime("Sun Sep 16 16:05:15 +0000 2012", "%a %b %d %H:%M:%S +0000 %Y")

Windows(上記を試したところ)では、%zディレクティブがサポートされていないように見えることに注意してください。これが、その+0000部分がハードコードされている理由です。この部分 (UTC オフセット) が変化すると予想される場合は、それが%z機能することを確認できない限り、別の手順でそれを処理する必要があります。

于 2012-11-08T16:18:19.550 に答える
2

datetime.strptime メソッドを使用して、文字列を datetime オブジェクトに変換します。ここで必要な形式を見つけることができます: http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

あなたの場合:

%a ロケールの省略された曜日名。
%b ロケールの省略された月名。
%d 10 進数 [01,31] としての日。
%H 10 進数 [00,23] としての時間 (24 時間制)。
%M 10 進数としての分 [00,59]。
%S 10 進数としての秒 [00,61]。
%Y 世紀を 10 進数として表した年。
%z +HHMM または -HHMM 形式の UTC オフセット (オブジェクトがナイーブの場合は空の文字列)。

于 2012-11-08T16:19:30.463 に答える
2

datetime モジュールを表示します ( http://docs.python.org/2/library/datetime.html )。あらゆる種類の日付操作のメソッドがあります。

于 2012-11-08T16:19:33.540 に答える
2

datetime.strptime()形式コードに従って文字列を解析するために使用します。あなたの場合、フォーマットはのようなものになります"%a %b %d %H:%M:%S %z %Y"。(注: この解析形式はテストしていません。)

詳細: http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

次に、オブジェクトを減算datetimeしてオブジェクトを取得できtimedeltaます。

または、Twitter の開発者ページにリストされている Python Twitter API ラッパーの 1 つを使用することもできます。これにより、おそらく変換が行われます: https://dev.twitter.com/docs/twitter-libraries#python

于 2012-11-08T16:21:17.773 に答える
1

datetime.datetime.strptime() を使用して日付を解析できます。その後、算術操作を行うことができますか?

于 2012-11-08T16:19:38.017 に答える
1

from datetime import datetime

start_date = 'Sun Sep 16 16:05:15 +0000 2012'
end_date = 'Sun Sep 17 23:55:20 +0000 2012'


def __datetime(date_str):
    return datetime.strptime(date_str, '%a %b %d %H:%M:%S +0000 %Y')

start = __datetime(start_date)
end = __datetime(end_date)

delta = end - start
print(delta)
print(delta.total_seconds())

hours = (delta.total_seconds())/3600

print("Hours %s" % hours)

minutes = (delta.total_seconds())//3600

print("minutes %s" % minutes)
print(divmod(delta.total_seconds(), 3600))

h, m = divmod(delta.total_seconds(), 3600)

print(h)
print(m)

M, s = divmod(m, 60)
print(M)
print(s)
于 2016-05-25T20:52:54.407 に答える