запрос даты и времени Python - PullRequest
1 голос
/ 14 мая 2011

У меня есть строка «Пт, 31 декабря 1999 23:59:59 GMT», которая приходит после повторной попытки.
Я хочу сравнить это с сегодняшней датой.
Я не понимаю, как работатьс GMT.
Кто-нибудь может мне помочь?

1 Ответ

3 голосов
/ 14 мая 2011

Использование dateutil и pytz :

import datetime as dt
import dateutil.parser as parser
import pytz

date_string="Fri, 31 Dec 1999 23:59:59 GMT"    
then=parser.parse(date_string)

eastern=pytz.timezone('US/Eastern')
now=eastern.localize(dt.datetime.now())

print(repr(then))
# datetime.datetime(1999, 12, 31, 23, 59, 59, tzinfo=tzutc())

print(repr(now))
# datetime.datetime(2011, 5, 14, 15, 51, 48, 438283, tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>)

print(then-now)
# -4152 days, 4:08:10.561717

Работа с часовыми поясами может быть сложной.Самый простой и самый надежный способ обработки произвольных преобразований часовых поясов - это использование pytz.

Если вы точно знаете, что date_string будет в часовом поясе GMT, тогда есть способ конвертировать между GMT иместное время без модуля pytz.Однако, будьте осторожны: хотя преобразование дает правильное (наивное) местное время и дату, разница между двумя наивными датами и временем может быть отключена на час из-за отсутствия учета летнего времени:

import datetime as dt
import calendar

date_string="Fri, 31 Dec 1999 23:59:59 GMT"
then=dt.datetime.strptime(date_string, "%a, %d %b %Y %H:%M:%S %Z")
# convert to localtime, assuming date_string is in GMT:
then=dt.datetime.fromtimestamp(calendar.timegm(then.timetuple()))
now=dt.datetime.now()

print(repr(then))
# datetime.datetime(1999, 12, 31, 18, 59, 59)

print(repr(now))
# datetime.datetime(2011, 5, 14, 15, 50, 7, 38349)

print(then-now)
# -4152 days, 3:09:51.961651
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...