Как я печатаю дату и время в локальном часовом поясе?

Скажем, у меня есть переменная t, это установлено на это:

datetime.datetime(2009, 7, 10, 18, 44, 59, 193982, tzinfo=<UTC>)

Если я говорю str(t), я добираюсь:

'2009-07-10 18:44:59.193982+00:00'

Как я могу получить подобную строку, кроме печатного в локальном часовом поясе, а не UTC?

23
задан martineau 27 September 2019 в 07:44
поделиться

2 ответа

Думаю, вам следует осмотреться: datetime.astimezone ()

http://docs.python.org/library/datetime.html#datetime.datetime.astimezone

См. Также модуль pytz - его довольно легко использовать - например:

eastern = timezone('US/Eastern')

http://pytz.sourceforge.net/

Пример:

from datetime import datetime
import pytz
from tzlocal import get_localzone # $ pip install tzlocal

utc_dt = datetime(2009, 7, 10, 18, 44, 59, 193982, tzinfo=pytz.utc)
print(utc_dt.astimezone(get_localzone())) # print local time
# -> 2009-07-10 14:44:59.193982-04:00
24
ответ дан 29 November 2019 в 02:08
поделиться

На днях я написал что-то вроде этого:

import time, datetime
def nowString():
    # we want something like '2007-10-18 14:00+0100'
    mytz="%+4.4d" % (time.timezone / -(60*60) * 100) # time.timezone counts westwards!
    dt  = datetime.datetime.now()
    dts = dt.strftime('%Y-%m-%d %H:%M')  # %Z (timezone) would be empty
    nowstring="%s%s" % (dts,mytz)
    return nowstring

Так что интересная часть для вас, вероятно, это строка, начинающаяся с "mytz = ...". time.timezone возвращает местный часовой пояс, хотя и с противоположным знаком по сравнению с UTC. Таким образом, он говорит "-3600", чтобы выразить UTC + 1.

Несмотря на его игнорирование перехода на летнее время (DST, см. Комментарий), я оставляю это для людей, которые возятся с time.timezone .

0
ответ дан 29 November 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: