Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 19, 2010 08:11:04

legioner
От:
Зарегистрирован: 2010-03-31
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

python 2.6 calendar

Всем привет. возникла необходимость получения массива дат(DD.MM.YYYY) за определенный промежуток времени.
я знаю что могу получить за месяц с помощь calendar.monthcalendar(2010, 11)
Как решить данную проблему?



Офлайн

#2 Ноя. 19, 2010 08:45:44

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

python 2.6 calendar

import time as _time
from datetime import datetime

def range_(start, stop, step):
""" start, stop - datetime
step - timedelta """
start = int(_time.mktime(start.timetuple()))
stop = int(_time.mktime(stop.timetuple())) + 1
step = step.days * 86400 + step.seconds
return map(datetime.fromtimestamp, xrange(start, stop, step))



Офлайн

#3 Ноя. 19, 2010 09:22:00

legioner
От:
Зарегистрирован: 2010-03-31
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

python 2.6 calendar

спс pyuser большое.



Офлайн

#4 Ноя. 19, 2010 09:25:59

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

python 2.6 calendar

у Вас шаг странный, он равен числу дней между датами :) поэтому вы и получили всего две даты.
сдвиг на один час - в этот период был перевод времени
попробуйте:

    start = datetime(2010, 10, 3)
stop = datetime(2010, 11, 10)
step = timedelta(days=1)

print(range_(start, stop, step))
чтобы сдвига на один час не было заметно, почитайте про tzinfo



Офлайн

#5 Ноя. 19, 2010 09:45:59

legioner
От:
Зарегистрирован: 2010-03-31
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

python 2.6 calendar

да я потом прочитал и понял. и поэтому удалил свой пост :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version