Преобразуйте строковую метку времени (со смещением часового пояса) к местному времени..? Python

Я пытаюсь преобразовать строковую метку времени в надлежащий объект даты и времени. Проблема, которую я имею, состоит в том, что существует смещение часового пояса и все, что я делаю, кажется, не работает.

В конечном счете я хочу преобразовать строковую метку времени в объект даты и времени в моем часовом поясе машин.

# string timestamp     
date = u"Fri, 16 Jul 2010 07:08:23 -0700"
9
задан alfredo 20 July 2010 в 03:34
поделиться

2 ответа

Пакет dateutil удобен для синтаксического анализа даты / времени:

In [10]: date = u"Fri, 16 Jul 2010 07:08:23 -0700"

In [11]: from dateutil.parser import parse

In [12]: parse(date)
Out[12]: datetime.datetime(2010, 7, 16, 7, 8, 23, tzinfo=tzoffset(None, -25200))

Наконец, чтобы преобразовать в ваш местный часовой пояс,

In [13]: parse(date).astimezone(YOUR_LOCAL_TIMEZONE)
9
ответ дан 4 December 2019 в 14:26
поделиться

Похоже, что datetime.datetime.strptime(d, '%a, %d %b %Y %H:%M:%S %z') должно работать, но согласно этому сообщению об ошибке есть проблемы с обработкой %z. Так что вам, вероятно, придется обрабатывать часовой пояс самостоятельно:

import datetime

d = u"Fri, 16 Jul 2010 07:08:23 -0700"

d, tz_info = d[:-5], d[-5:]
neg, hours, minutes = tz_info[0], int(tz_info[1:3]), int(tz_info[3:])
if neg == '-':
    hours, minutes = hours * -1, minutes * -1

d = datetime.datetime.strptime(d, '%a, %d %b %Y %H:%M:%S ')
print d
print d + datetime.timedelta(hours = hours, minutes = minutes)
5
ответ дан 4 December 2019 в 14:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: