Разобрать дату и время из строки с часовым поясом с помощью стрелки
Я имею
import arrow
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
Как я могу разобрать это с Arrow так, чтобы я получил объект Arrow с часовым поясом tz
? Следующее по умолчанию время UTC.
In [30]: arrow.get(s, 'YYYY/M/D HH:mm:ss')
Out[30]: <Arrow [2015-12-01T19:00:00+00:00]>
Я знаю .to
функция, но это преобразует часовой пояс и, но не позволяет мне перейти на часовой пояс.
3 ответа
Попробуй это:
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo=dateutil.tz.gettz(tz))
Я еще не готов добавить комментарий и просто хотел бы поделиться немного более простой версией ответа с выражением str в часовом поясе.
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo=tz)
или просто местный часовой пояс:
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo='local')
или указанный стиль ISO-8601:
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo='+08:00')
Это работает для меня с 0.10.0:
import arrow
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
arrow.get(s, 'YYYY/M/D HH:mm:ss', tzinfo=tz)
# <Arrow [2015-12-01T19:00:00+08:00]>
Тем не мение,
arrow.get('2018-01-29 14:46', tzinfo='US/Central')
(т.е. без строки формата) игнорирует
tzinfo
параметр.
В соответствии с текущей документацией вы также можете указать часовой пояс по умолчанию для arrow.get()
Например:
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
arrow.get(s, tzinfo=tz)
Однако на данный момент (версия 0.12.1) есть недостаток, который не работает для парсинга дат на основе строк. К счастью, это было исправлено, поэтому в следующем выпуске Arrow будет это исправление.