Получить системную дату / время в Python после изменения часового пояса - PullRequest
3 голосов
/ 19 сентября 2011

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

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

from datetime import datetime
dateTimeTuple = datetime.now()

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

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

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

1 Ответ

2 голосов
/ 19 сентября 2011

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

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

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

Вот наивная дата-время.

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 часов.

...