2012-08-16 14 views
7

Para time.timezone, la documentación de Python dice:¿Por qué Python devuelve un valor de zona horaria negativo?

El desplazamiento del local (-DST no) zona horaria, en cuestión de segundos al oeste de UTC (negativo en la mayor parte de Europa Occidental y positiva en los EE.UU., cero en el Reino Unido)

¿Alguien sabe por qué devuelve un valor negativo para la mayor parte de Europa occidental? Estos países están en una compensación positiva, y no en una negativa.

Ejemplo: Bruselas se encuentra en la zona horaria GMT + 1 ...

+0

Sospecho que hay un error tipográfico. ¿Has probado lo que realmente regresa? –

+0

'UTC_Time - Brussels_Time = -1' hora. Entonces puede obtener este número y sumar con las horas UTC y obtener tiempos de Bruselas. Podrían hacer lo contrario y solo necesitarían restar. – JBernardo

+0

Si se define en segundos _west of UTC_, un valor negativo tiene sentido para las zonas horarias que son _east_ de UTC. Eso me parece poco común, pero la descripción es consistente. – omz

Respuesta

7

Este es un artefacto de Unix. Aunque la descripción numérica estándar para zonas horarias está en horas y minutos al este desde UTC (UTC + 1 para Bruselas, UTC-5 para Nueva York, etc.), el Unix timezone se mide en segundos west desde UTC.

De http://pubs.opengroup.org/onlinepubs/7908799/xsh/tzset.html:

La variable externa timezone se establece en la diferencia, en segundos, entre el Tiempo Universal Coordinado (UTC) y la hora estándar local, por ejemplo:

TZ timezone 
EST 5*60*60 
GMT 0*60*60 
JST -9*60*60 
MET -1*60*60 
MST 7*60*60 
PST 8*60*60 

En cuanto a por qué Unix lo tiene al revés, supongo que es un accidente histórico, probablemente porque Unix se desarrolló originalmente en los Estados Unidos.

Cuestiones relacionadas