2010-05-21 4 views

ответ

51

Вы можете использовать time.localtime и посмотреть флаг tm_isdst в возвращаемом значении.

>>> import time 
>>> time.localtime() 
(2010, 5, 21, 21, 48, 51, 4, 141, 0) 
>>> _.tm_isdst 
0 

time.localtime() Используя, вы можете задать тот же вопрос для любой произвольный момент времени, чтобы увидеть, будет ли DST быть (или был) в силу для текущего часового пояса.

+0

Это может быть немного более понятно использовать свойство time.daylight. Он вернет ненулевой результат, если ваш текущий часовой пояс имеет DST. –

+7

@brian buck: Это другое, хотя. Для данного часового пояса 'time.daylight' является постоянным, поскольку существует зона дневного света, либо она отсутствует. С другой стороны, флаг 'tm_isdst' отражает, является ли данное время * в * датой начала и окончания летнего времени. –

+0

Эта путаница в вопросе 'time.daylight' представляется более серьезной проблемой: http://bugs.python.org/issue7229. –

-8

Если вы хотите проверить, действует ли дневной свет с текущими настройками компьютера, используйте time.daylight.

>>> import time 
>>> print time.daylight 

time.daylight только говорит ли или нет компьютер в настоящее время в летнее время, а не если компьютер «Автоматически корректировать часы для перехода на летнее время изменения» набора. Для тех компьютеров, которые не настроены на регулировку дневного света, time.daylight всегда будет 0 круглый год.

Один из способов определить, будет ли компьютер настраиваться на летнее время в течение года, чтобы получить кортеж, возвращенный именем time.tz, и если они являются различиями (например, len (set (time.tzname))! = 1), тогда компьютер включит регулировку дневного света.

+8

'time.daylight говорит только, находится ли компьютер в настоящее время в летнее время' - это неверно. 'time.daylight' говорит только в том случае, если компьютер находится в часовом поясе, у которого будут изменения времени, связанные с dst. Он ничего не говорит о том, что они действуют или нет. Это можно проверить с помощью 'tm_isdst' –

+0

BTW: Документы для tzname:' ​​Кортеж из двух строк: первый - это имя локального часового пояса, отличного от DST, второе - это имя локального часового пояса DST. Если часовой пояс DST не определен, вторая строка не должна использоваться. 'Так что len может быть> 1, даже если dst не определено. –

+1

Голосование, чтобы удалить ответ, если он неверен. –

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