2012-05-10 3 views
1

Может ли кто-нибудь сказать мне, почему часовой пояс возвращается как «Mountain Daylight Time», а не как MST?strftime не возвращает сокращенный часовой пояс

import time 

print time.strftime("%H:%M %A %Z %d %b %y") 
+0

Вы используете Linux или Windows? – alan

+0

На ваш вопрос ответили? Если это так, вы должны принять один из ответов. – alan

ответ

0

Ваш код представляется правильным

import time 

print time.strftime("%H:%M %A %Z %d %b %y") 

#=> 13:54 Thursday CDT 10 May 12 

Какая версия Python вы используете?

+0

У меня такое же, как на Ubuntu Linux, так и на mac-OSX 10.5 (python 2.6 для обоих, я думаю ...) – mgilson

+0

Ditto для OS X 10.7.4 и Python 2.5, 2.6, 2.7 и 3.2. –

2

Я предполагаю, что вы используете Windows, основываясь на другом вопросе, который вы задали.

В Windows strftime("%Z") отображает DaylightName или StandardName значения, расположенные в этом разделе реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation. На дисплее отображается (зависит) от того, действует ли дневное время. Если вы измените эти параметры, вы должны перезагрузить их, чтобы они вступили в силу.

В Linux, я считаю (около 80% определенных :-), что strftime использует часовой пояс, который он находит в /etc/localtime. На Ubuntu вы установили это с помощью dpkg-reconfigure tzdata. В Linux %Z отображает временную зону (например, шахта теперь показывает 'EDT', %z показывает смещение от UTC (например, шахта теперь отображает '-0400'

+0

в качестве переносного решения можно использовать модуль 'pytz':' aware_dt.tzname() 'или' aware_dt.strftime ('% Z') ', если вы хотите отформатировать время. – jfs

0

я столкнулся с той же проблемой, используя окна. В качестве быстрого и грязного раствора для 4 США часовые пояса, вы можете просто удалить все символы, которые не являются заглавные буквы из строки часовых поясов:

abbreviated_tz_str = re.sub(r'[^A-Z]', '', multiplatform_tz_str) 

так как пример, вот как я включаю отметку времени в хорошую строку:

import re 
    import time 

    def nice_str(timestamp): 
     dt_str = time.strftime("%m/%d/%Y %I:%M:%S %p", time.localtime(timestamp)) 
     tz_str = time.strftime("%Z", time.localtime(timestamp)) 
     final_str = "%s (%s)" % (dt_str, re.sub(r'[^A-Z]', '', tz_str)) 
     return(final_str) 

Итак:

print(nice_str(1425917368)) 

Шоу:

03/09/2015 09:09:28 AM (PDT) 

Это работает, даже на окнах.

Смежные вопросы