Получить системную дату/время в Python после смены часового пояса

В моей системе я установил текущий часовой пояс для своих часов на «Куала-Лумпур, Сингапур (UTC+08:00)», что переводит мои часы на восемь часов вперед (конечно).

В python я использую код для получения текущего времени/даты:

from datetime import datetime
dateTimeTuple = datetime.now()

Я использую этот метод, так как мне нужны отдельные части (включая микросекунды).

Однако он всегда возвращает мне обычное время (а не восемь часов вперед в зависимости от выбранного часового пояса).

Есть ли другой метод?


person williamtroup    schedule 19.09.2011    source источник


Ответы (1)


datetime.now() возвращает наивное локальное время и дату. Чтобы преобразовать это во время Куала-Лумпура, вам сначала нужно сделать его датой и временем с учетом часового пояса, а затем преобразовать его в часовой пояс Куала-Лумпура:

Самый простой способ преобразования часовых поясов — использовать pytz.

import pytz
import datetime as dt
kuala_lumpur=pytz.timezone('Asia/Kuala_Lumpur')
localtz=pytz.timezone('Europe/London')

Вот наивный datetime.

now = dt.datetime.now()

Используйте localize, чтобы указать часовой пояс даты и времени.

now=localtz.localize(now)
print(now)
# 2011-09-19 11:58:46.342254+01:00

Используйте astimezone для преобразования в другой часовой пояс:

now_in_kuala_lumpur=now.astimezone(kuala_lumpur)
print(now_in_kuala_lumpur)
# 2011-09-19 18:58:46.342254+08:00

Из-за летнего времени в Великобритании и в Куала-Лумпуре нет летнего времени, разница во времени на данный момент 7 часов.

person unutbu    schedule 19.09.2011