Как преобразовать дату и время в unix метку времени в python - PullRequest
0 голосов
/ 19 июня 2020

У меня один формат даты: «Пн, 15 июня 2020 22:11:06 PT». Я хочу преобразовать этот формат в unix отметку времени.

Я использую следующий код ===>

news_date = datetime.strptime(news_date, '%a, %d %b %Y %H:%M:%S %Z')
news_date = calendar.timegm(news_date.utctimetuple())   

Но выдает следующую ошибку ===>

ValueError: time data 'Mon, 15 Jun 2020 22:11:06 PT' does not match format '%a, %d %b %Y %H:%M:%S %Z'

Как я могу решить эту проблему и получить метку времени unix из этого?

1 Ответ

0 голосов
/ 19 июня 2020

%Z не может проанализировать имя часового пояса PT - я предлагаю вам пропустить его и добавить вместо этого «вручную»:

from datetime import datetime
import dateutil

news_date = "Mon, 15 Jun 2020 22:11:06 PT"

# parse string without the timezone:
news_date = datetime.strptime(news_date[:-3], '%a, %d %b %Y %H:%M:%S')

# add the timezone:
news_date = news_date.replace(tzinfo=dateutil.tz.gettz('US/Pacific'))

# extract POSIX (seconds since epoch):
news_date_posix = news_date.timestamp()
# 1592284266.0

если у вас есть несколько строк с разными часовыми поясами, вы можно использовать dict для сопоставления сокращений с именами часовых поясов , например

tzmapping = {'PT': 'US/Pacific'}
news_date = "Mon, 15 Jun 2020 22:11:06 PT"
# get appropriate timezone from string, according to tzmapping:
tz = dateutil.tz.gettz(tzmapping[news_date.split(' ')[-1]])
# parse string and add timezone:
news_date_datetime = datetime.strptime(news_date[:-3], '%a, %d %b %Y %H:%M:%S')
news_date_datetime = news_date_datetime.replace(tzinfo=tz)
...