0

私は、30 秒間隔で 1 日の時間を生成するコードに取り組んでいました。DT.datetime と DT.time を使用してみましたが、常に datetime 値または (0,2970) のような timedelta 値のいずれかになります。誰かがこれを行う方法を教えてください。

したがって、次のようなデータを持つリストが必要です。

[00:00:00] [00:00:01] [00:00:02]

[23:59:59] までで、2011 年 6 月 23 日 6:38:00 AM などの日時値と比較する必要がありました。

ありがとう!

4

2 に答える 2

0

3 つの for ループのカウントアップではなく、datetimes を使用する理由はありますか? 同様に、何か派手なことをしたいですか、それとも単に時間と比較したいですか? うるう秒などを考慮する必要がない場合は、簡単な方法で行ってください。

import datetime

now = datetime.datetime.now()

for h in xrange(24):
    for m in xrange(60):
        for s in xrange(60):
           time_string = '%02d:%02d:%02d' % (h,m,s)
           if time_string == now.strftime('%H:%m:%S'):
               print 'you found it! %s' % time_string

なぜこれを行っているのかについて、さらに情報を提供できますか?60 * 60 * 24回ループするのではなく、日時を解析するか、strftimeを使用して必要なものを取得する方がはるかに優れているようです。

于 2013-04-09T04:15:20.747 に答える
0

1 日 24 時間の秒単位の増分値のリストを取得する方法については、優れた回答があります。一部再利用しました。

  • 注1timeと比較することをどのように考えているのかわかりませんdatetime。時間部分を比較してそれを抽出するだけだと仮定します。
  • 注2。あなたのtime.strptime例のように、呼び出しは 12 時間の AM/PM ベースの時間を想定しています。その結果は に渡されtime.strftime、24 時間ベースの時間が返されます。

ここにあなたが探していると思うものがあります:

my_time = '6/23/2011 6:38:00 AM' # time you defined

from datetime import datetime, timedelta
from time import strftime, strptime

now = datetime(2013, 1, 1, 0, 0, 0)
last = datetime(2013, 1, 1, 23, 59, 59)
delta = timedelta(seconds=1)

times = []
while now <= last:
    times.append(now.strftime('%H:%M:%S'))
    now += delta

twenty_four_hour_based_time = strftime('%H:%M:%S', strptime(my_time, '%m/%d/%Y %I:%M:%S %p'))
twenty_four_hour_based_time in times # returns True
于 2013-04-09T04:10:57.570 に答える