Python: strftime, gmtime без учета часового пояса - PullRequest
16 голосов
/ 25 января 2011
import time
print time.strftime("%a, %d %b %Y %I:%M %p %Z", time.gmtime())

Я живу в Калифорнии. По какой-то причине этот код сообщает время по Гринвичу, а не по системному часовому поясу. Я знаю, что strftime знает, что я в Тихом океане, потому что он все еще печатает «PST» в конце, но все еще впереди на 8 часов. Кто-нибудь еще замечает это? Кто-нибудь знает, что не так с моей системой или моим кодом?

EDIT : запуск date в командной строке дает мне правильную дату. Кроме того, я запустил это на двух разных компьютерах (mac и linux), и они оба отчитались за 8 часов. Ожидается ли корректировка часового пояса перед использованием strftime?

Ответы [ 2 ]

29 голосов
/ 25 января 2011

time.gmtime() возвращает время в UTC.Вам нужно time.localtime(), что с учетом часового пояса.Это поведение хорошо документировано в документации модуля time .

РЕДАКТИРОВАТЬ:

Чтобы преобразовать любую метку времени в стиле time.time() в struct_time, вы можетепредоставить аргумент time.localtime():

>>> print time.strftime("%a, %d %b %Y %I:%M:%S %p %Z", time.localtime(10.5))
Thu, 01 Jan 1970 02:00:10 AM EET
0 голосов
/ 25 октября 2012

Чтобы изменить часовой пояс в вашей Unix-системе, сделайте что-то вроде этого:

ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Просмотрите в /usr/share/zoneinfo/, чтобы найти то, что вы хотите, и измените команду выше

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