2010-05-21 16 views

Respuesta

51

Puede usar time.localtime y mirar el indicador tm_isdst en el valor de retorno.

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

Usando time.localtime(), se puede hacer la misma pregunta para cualquier tiempo arbitrario para ver si el horario de verano sería (o era) en efecto para su zona horaria actual.

+0

Puede ser un poco más claro usar la propiedad time.daylight. Devolverá un resultado distinto de cero si su zona horaria actual tiene DST. –

+7

@brian buck: sin embargo, eso es diferente. Para un huso horario dado, 'time.daylight' es constante porque una zona de luz diurna existe o no existe. Por otro lado, el indicador 'tm_isdst' refleja si el tiempo dado es * dentro * de las fechas de inicio y finalización del horario de verano. –

+0

Esta confusión sobre 'time.daylight' parece ser un problema mayor: http://bugs.python.org/issue7229. –

-8

Si desea comprobar si la luz del día está actualmente en efecto con la configuración actual de la computadora, utilice time.daylight.

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

time.daylight sólo se dice si el equipo se encuentra actualmente en el horario de verano, si el equipo no ha "Ajustar automáticamente el reloj horario de verano cambios" conjunto. Para aquellas computadoras que no tienen ajuste de horario de verano, time.daylight siempre será 0 durante todo el año.

Una forma de determinar si la computadora se ajustará al horario de verano durante el año es obtener la tupla devuelta por time.tzname y si son diferencias (es decir, len (set (time.tzname))! = 1), entonces la computadora tiene activado el ajuste de ahorro de luz diurna.

+8

'time.daylight solo dice si la computadora está o no en horario de verano' - esto no es cierto. 'time.daylight' solo dice si la computadora está en una zona horaria que tendrá cambios de tiempo relacionados con dst. No dice nada acerca de que estén en efecto o no. Esto se puede verificar con 'tm_isdst' –

+0

BTW: Docs para tzname:' ​​Una tupla de dos cadenas: la primera es el nombre de la zona horaria local no DST, la segunda es el nombre de la zona horaria DST local. Si no se define una zona horaria DST, la segunda cadena no se debe usar. Por lo que len puede ser> 1 incluso si no se define dst. –

+1

Votación para eliminar la respuesta porque es incorrecta. –

Cuestiones relacionadas