Отображение названия часового пояса в отформатированной строке даты и времени - PullRequest
1 голос
/ 09 апреля 2019

Я хочу напечатать текущую дату и время с именем часового пояса для локальной машины. Тем не менее, я не могу получить последний бит

In [1]: from datetime import datetime

In [2]: print(datetime.now().strftime('%d %b %Y %H:%M:%S'))
09 Apr 2019 13:23:47

In [3]: print(datetime.now().strftime('%d %b %Y %H:%M:%S %Z'))
09 Apr 2019 13:23:52

Я бы ожидал увидеть имя часового пояса моего компьютера ('CET'), добавленное ко второй строке. Как мне получить:

09 Apr 2019 13:23:52 CET

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

Обычно, если вы хотите получить информацию о часовом поясе вашей системы, используйте библиотеку time.

>>> import time
>>> time.tzname
('IST', 'IST')

В моем случае часовой пояс - IST.

Обновление Если вы хотите использовать только модуль datetime, есть хакерский способ, но он определенно не рекомендуется. Решение упомянуто в этом ответе . Но опять-таки проблема в том, что это не полное доказательство, предположим, что у вас одинаковая разница часовых поясов для 2 стран, таких как Индия и Шри-Ланка, тогда она не сможет распознать правильную, поскольку IST и SLST имеют GMT + 5: 30 * 1012. *

1 голос
/ 09 апреля 2019

Это потому что datetime.now по умолчанию tz аргумент None.

Пример того, как указать часовой пояс:

from pytz import UTC
datetime.now(tz=UTC).strftime("%Z")

плюет UTC.

Если вы хотите получить текущий часовой пояс, то:

import time
time.strftime("%Z", time.gmtime())

В моем случае это GMT

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