8

15分ごとに8:00から17:00までの2回の間でループしようとしています

予想される出力は、次のような時間のリストになります

[8:00, 8:15, 8:30, 8:45, 9:00]

これは私が得たこれまでです

now = datetime(2013, 2, 9, 8, 00)
end = now + timedelta(hours=9)

しかし、ループを実行して目的のリストを返す方法がわかりません。

ご覧いただきありがとうございます。

4

6 に答える 6

6

これですか?

>>> now = datetime(2013,2,9,8,0)
>>> end = now + timedelta(hours=9)
>>> while now <= end:
        print 'doing something at', now
        now += timedelta(minutes=15)

doing something at 2013-02-09 08:00:00
doing something at 2013-02-09 08:15:00
doing something at 2013-02-09 08:30:00
doing something at 2013-02-09 08:45:00
../..
于 2013-02-09T01:18:42.953 に答える
3

これは機能します:

import datetime

now = datetime.datetime(2013, 2, 9, 8, 00)
end=now+datetime.timedelta(hours=9)

l=[]
while now<=end:
    l.append(now)
    now+=datetime.timedelta(minutes=15)

print [t.strftime("%H:%M") for t in l]  

プリント:

['08:00', '08:15', '08:30', '08:45', '09:00', '09:15', '09:30', '09:45', '10:00', '10:15', '10:30', '10:45', '11:00', '11:15', '11:30', '11:45', '12:00', '12:15', '12:30', '12:45', '13:00', '13:15', '13:30', '13:45', '14:00', '14:15', '14:30', '14:45', '15:00', '15:15', '15:30', '15:45', '16:00', '16:15', '16:30', '16:45', '17:00']
于 2013-02-09T01:29:56.203 に答える
2
l=[]

while now<end:
    l.append(now)
    now+=timedelta(minutes=15)
于 2013-02-09T01:18:54.263 に答える
2

リスト内の要素の数を事前に計算できる場合は、これを使用できます。

入力:

import datetime
now = datetime.datetime(2013, 2, 9, 8, 00)
print [(now + datetime.timedelta(minutes=15*n)).strftime('%H:%M') for n in range(37)]

出力:

['08:00', '08:15', '08:30', '08:45', '09:00', '09:15', '09:30', '09:45', '10:00', '10:15', '10:30', '10:45', '11:00', '11:15', '11:30', '11:45', '12:00', '12:15', '12:30', '12:45', '13:00', '13:15', '13:30', '13:45', '14:00', '14:15', '14:30', '14:45', '15:00', '15:15', '15:30', '15:45', '16:00', '16:15', '16:30', '16:45', '17:00']
于 2013-02-09T02:45:20.720 に答える
1

forループのように簡単にできるようなことをするために、私は真剣にデロリアンに真剣な表情を向けます。

>>> import delorean
>>> from delorean import stops
>>> for stop in stops(freq=delorean.MINUTELY, count=4, start=d1, interval=15):
...     print stop.datetime
... 
2012-05-06 00:00:00+00:00
2012-05-06 00:15:00+00:00
2012-05-06 00:30:00+00:00
2012-05-06 00:45:00+00:00

質問の良い例となる停止時間を提供することもできます。

于 2013-02-21T06:11:55.463 に答える
1
import datetime as dt

def timerange (start, end, step):
    while start < end:
        yield start
        start += step

for x in timerange (dt.datetime (2013, 2, 9, 8), dt.datetime (2013, 2, 9, 17), dt.timedelta (minutes = 15) ):
        print (x)

段階的な時間範囲がより頻繁に必要な場合。

于 2013-02-09T03:13:42.503 に答える