Python - конвертировать ISO 8601 в BST время - PullRequest
0 голосов
/ 02 июля 2018

Таким образом, я немного узнал о ISO 8601, где формат

"2018-07-06T07:00:00.000"

и в основном я достиг того, что я начал менять ISO на более официальную временную метку:

etatime = str(datetime.datetime.strptime("2018-07-06T07:00:00.000", "%Y-%m-%dT%H:%M:%S.%f"))

, который даст вывод:

2018-07-06 07:00:00

Однако я заметил, что время отстает от BST (британского времени) на 1 час.

У меня вопрос: можно ли перейти от (2018-07-06T07:00:00.000) к (2018-07-06 08:00:00 BST)?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Допущения: ввод представляет временную метку UTC, и вы хотите локализовать ее на Лондон время. Вы, вероятно, не хотите локализовать его по времени BST, поскольку BST - это изменение DST по Гринвичу, а фактическое местоположение, например Лондон, будет переключаться между BST и GMT в зависимости от времени года. Вы захотите установить модуль pytz .

from datetime import datetime, timezone
import pytz

date = '2018-07-06T07:00:00.000'
utc_date = datetime.strptime(date, '%Y-%m-%dT%H:%M:%S.%f').replace(tzinfo=timezone.utc)
london_date = utc_date.astimezone(pytz.timezone('Europe/London'))
datetime.datetime(2018, 7, 6, 8, 0, tzinfo=<DstTzInfo 'Europe/London' BST+1:00:00 DST>)

strptime дает вам наивный datetime объект (без информации о часовом поясе), .replace дает вам осведомленный datetime объект (с информацией о часовом поясе), который затем позволяет просто преобразовать это в другой часовой пояс.

0 голосов
/ 02 июля 2018

Одно из предложений заключается в том, что вы можете использовать функцию timedelta из datetime модуля:

from datetime import datetime, timedelta

etatime = datetime.strptime("2018-07-06T07:00:00.000", "%Y-%m-%dT%H:%M:%S.%f")

# Before adding one hour
print(etatime)

etatime = etatime + timedelta(hours=1)

# After adding one hour
print(etatime)

Выход:

2018-07-06 07:00:00
2018-07-06 08:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...