2013-02-09 24 views
5

Tôi đang cố gắng lặp lại giữa hai lần, từ 8:00 đến 17:00 trong mỗi 15 phútTôi đang cố gắng lặp lại giữa hai lần, từ 8:00 đến 17:00 cho mỗi 15 phút

sản lượng dự kiến ​​sẽ là một danh sách các thời điểm như thế

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

Đây là cho đến nay tôi đã

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

Nhưng tôi không thể tìm ra cách để chạy vòng lặp để trả lại cho tôi danh sách mong muốn của tôi.

Cảm ơn bạn đã tìm kiếm.

+0

Loại OK. nhưng không hoàn toàn đúng. Vì tôi không cần đối tượng datetime, tôi chỉ cần khe thời gian như đã đề cập. khe = bây giờ trong khi vị trí <= kết thúc: ... khe cắm in.ngăn ("% H% M") ... khe = khe + timedelta (phút = 15) – mmrs151

Trả lời

3

Ý bạn là gì?

>>> 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 
../.. 
2
l=[] 

while now<end: 
    l.append(now) 
    now+=timedelta(minutes=15) 
3

này hoạt động:

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] 

in:

['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'] 
2

Nếu bạn có thể tính toán trước thời hạn số phần tử trong danh sách, bạn có thể sử dụng này:

Nhập:

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)] 

Output:

['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'] 
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) 

Trong trường hợp bạn cần tăng cường thời gian dao động thường xuyên hơn.

1

Tôi sẽ nghiêm túc cung cấp cho Delorean một cái nhìn nghiêm túc để làm điều đó sẽ dễ dàng như một vòng lặp 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 

Bạn cũng có thể cung cấp thời gian dừng là ví dụ tuyệt vời cho câu hỏi của mình.

Các vấn đề liên quan