Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 8, 2007 08:35:15

proDiva
От:
Зарегистрирован: 2007-02-15
Сообщения: 244
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции для работы с датами

Излазила модули calendar.py и datetime.py, не могу разобраться. Может кто-то уже использовал функции нахождения количества дней между датами или наоборот нахождения даты на некоторое число дней раньше от данной? И вообще, я хочу работать с датами в привычном формате дд.мм.гггг! Кто может подсказать?



Офлайн

#2 Окт. 8, 2007 09:48:44

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Функции для работы с датами

в datetime есть timedelta
сделать просто вычитание одного datetime объекта из другого не пробовали?



Офлайн

#3 Окт. 8, 2007 10:51:36

proDiva
От:
Зарегистрирован: 2007-02-15
Сообщения: 244
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции для работы с датами

bialix
сделать просто вычитание одного datetime объекта из другого не пробовали?
не пробовала, потому что у меня даты текстового типа…….. а чтобы преобразовать в datetime дату нужно разбивать (насколько я поняла) на вид гггг, ммм, д……… нет чего-нибудь проще и удобнее?



Офлайн

#4 Окт. 8, 2007 11:26:27

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Функции для работы с датами

Если тебе нужно преобразовать дату текстого типа в time tuple, ты можешь использовать функцию time.strptime, вторым аргументом являеться шаблон твоей строки. То бишь у тебя для дд.мм.гггг это будет “%d%m%Y”.



Офлайн

#5 Окт. 8, 2007 12:45:24

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Функции для работы с датами

proDiva,

>>> import datetime
>>> import time
>>> s2d = lambda s, format: datetime.datetime.fromtimestamp(time.mktime(time.strptime(s, format)))
>>> d0 = s2d(“8.10.2007”, “%d.%m.%Y”)
>>> d1 = s2d(“31.12.2007 23:59”, “%d.%m.%Y %H:%M”)
>>> d0
<<< datetime.datetime(2007, 10, 8, 0, 0)
>>> dt = d1 - d0
>>> dt
<<< datetime.timedelta(84, 86340)
>>> dt.days
<<< 84


P.S. С датами меньше 01.01.1901 strptime не работает



Отредактировано (Окт. 8, 2007 12:47:20)

Офлайн

#6 Окт. 8, 2007 15:13:22

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Функции для работы с датами

Макс Ищенко на последнем exception упомянул о babel - хорошей библиотеке для локализации.
Помимо всего прочего там есть работа с датами/временем
parse_date, parse_datetime etc.



Офлайн

#7 Окт. 8, 2007 15:48:09

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Функции для работы с датами

Это лишняя зависимость. Если нужен i18n и для этого используется вавилон, то это “бесплатно”. Здесь же можно вполне обойтись пакетами из stdlib.



Офлайн

#8 Окт. 8, 2007 17:16:48

proDiva
От:
Зарегистрирован: 2007-02-15
Сообщения: 244
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции для работы с датами

j2a
Спасибо, пример лучше не бывает!



Офлайн

#9 Янв. 21, 2008 17:00:24

well
От:
Зарегистрирован: 2006-11-20
Сообщения: 163
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции для работы с датами

Всем привет. У меня тут проблемка возникла. Вот код:
import datetime
myVar = datetime.datetime.today () - datetime.timedelta(weeks=4)

Как мне красиво, не переводя в стрингу и не парся её, из переменной myVar вытянуть год, месяц, неделю?



Офлайн

#10 Янв. 21, 2008 17:22:40

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Функции для работы с датами

myVar.year, myVar.month, myVar.isocalendar()



Отредактировано (Янв. 21, 2008 17:32:58)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version