Измените метку времени с dateutil с utc на not utc
Что существует
import datetime
import dateutil.parser
import time
timestamp = dateutil.parser.parse(response["body"]["inserted_at"])
В чем проблема
Эта временная метка UTC
, но это должно быть UTC+1
или TimeZone Европа, Цюрих
Вопрос
Что я должен добавить в существующий код, чтобы иметь метку времениas Europe,Zurich, and no more
UTC`?
заранее спасибо
2 ответа
Вы хотите использовать astimezone
метод datetime.datetime
, Если у вас есть дата и время в любом часовом поясе (например, UTC) и вы хотите использовать его в другом поясе, вы используете dt_new_tz = dt_old_tz.astimezone(new_tz)
В этом случае вы хотите:
from dateutil import tz
zurich_tz = tz.gettz("Europe/Zurich")
new_ts = timestamp.astimezone(zurich_tz)
astimezone()
Метод, показанный Полом, настроит дату и время в соответствии с новым часовым поясом. Обычно это то, что вы хотите. Например, если у вас есть метка времени UTC, и вы хотите преобразовать ее в UTC+1 (или любой другой часовой пояс), то вам нужно добавить час (или выполнить другую арифметику), что astimezone()
делает для вас. Он также заботится о переходе на летнее или летнее время, а также о многочисленных более существенных нарушениях часового пояса.
Однако иногда это не то, что вы хотите. Например, если у вас есть часовой пояс UTC + 1, который неверно помечен как UTC, то astimezone()
добавит час, производя дату и время UTC+2, которое неверно помечено как UTC+1. Если это описывает вашу проблему, то вы должны использовать replace()
метод вместо astimezone()
, Это просто "перемаркирует" часовой пояс без какой-либо арифметики преобразования. Например, он преобразует 14:00 UTC в 14:00 UTC+1. Это наиболее полезно в тех случаях, когда у вас есть временная метка без информации о часовом поясе или анализатор, который недостаточно умен, чтобы понимать предоставленную информацию о часовом поясе.
(Вам необходимо знать, какие из этих двух проблем у вас есть. Невозможно автоматически определить, имеет ли ваш объект datetime"правильную" информацию о часовом поясе, потому что Python не может угадать ваши намерения.)