Cuestiones de tiempo

Estoy enfrentando algunos problemas en un progtwig multiplataforma: cuando abro un shell de Python en Linux y en Windows, no obtengo el mismo tiempo de la época.

En Linux, intenté hacer dpkg-reconfigure tzdata .

Actualmente, en linux obtengo que avec el dpkg-reconfigure tzdata:

 Current default time zone: 'Europe/London' Local time is now: Mon May 30 10:29:52 BST 2011. Universal Time is now: Mon May 30 09:29:52 UTC 2011. 

Luego, en la consola de python, creo este script:

 import time print time.tzname, time.timezone, time.altzone, time.daylight print time.localtime() print time.localtime(0) 

En linux que devuelve:

 ('GMT', 'BST') 0 -3600 1 time.struct_time(tm_year=2011, tm_mon=5, tm_mday=30, tm_hour=11, tm_min=35, tm_sec=8, tm_wday=0, tm_yday=150, tm_isdst=1) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=1, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0) 

En las ventanas que devuelve:

 ('GMT', 'GMT (heure d\x92\xe9t\xe9)') 0 -3600 1 time.struct_time(tm_year=2011, tm_mon=5, tm_mday=30, tm_hour=11, tm_min=40, tm_sec=1, tm_wday=0, tm_yday=150, tm_isdst=1) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0) 

Entonces probé este script:

 myTime = 0 dst = 0 while myTime < time.time(): l = time.localtime(myTime) if l[8] is not dst: dst = l[8] print dst, l myTime += 24*60*60 

Las primeras líneas devueltas en Linux son:

  1 time.struct_time(tm_year=1972, tm_mon=3, tm_mday=27, tm_hour=1, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=80, tm_isdst=1) 0 time.struct_time(tm_year=1972, tm_mon=10, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=304, tm_isdst=0) 1 time.struct_time(tm_year=1973, tm_mon=3, tm_mday=19, tm_hour=1, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=78, tm_isdst=1) 0 time.struct_time(tm_year=1973, tm_mon=10, tm_mday=29, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=302, tm_isdst=0) IT CONTINUES UTNIL TODAY.................. 

Las primeras líneas devueltas en Windows son:

  1 time.struct_time(tm_year=1970, tm_mon=3, tm_mday=30, tm_hour=1, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=89, tm_isdst=1) 0 time.struct_time(tm_year=1970, tm_mon=10, tm_mday=26, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=299, tm_isdst=0) 1 time.struct_time(tm_year=1971, tm_mon=3, tm_mday=29, tm_hour=1, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=88, tm_isdst=1) 0 time.struct_time(tm_year=1971, tm_mon=11, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=305, tm_isdst=0) 1 time.struct_time(tm_year=1972, tm_mon=3, tm_mday=27, tm_hour=1, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=87, tm_isdst=1) 0 time.struct_time(tm_year=1972, tm_mon=10, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=304, tm_isdst=0) 1 time.struct_time(tm_year=1973, tm_mon=3, tm_mday=26, tm_hour=1, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=85, tm_isdst=1) 0 time.struct_time(tm_year=1973, tm_mon=10, tm_mday=29, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=302, tm_isdst=0) IT CONTINUES UTNIL TODAY.................. 

Así que en Windows, tenemos la fecha de 1970, mientras que en Linux, ¡comienza en 1972!

Entonces si escribo eso en mi consola bash:

 zdump -v /usr/share/zoneinfo/Europe/London | grep 197 

Lo entiendo :

 /usr/share/zoneinfo/Europe/London Sun Oct 31 01:59:59 1971 UTC = Sun Oct 31 02:59:59 1971 BST isdst=0 gmtoff=3600 /usr/share/zoneinfo/Europe/London Sun Oct 31 02:00:00 1971 UTC = Sun Oct 31 02:00:00 1971 GMT isdst=0 gmtoff=0 /usr/share/zoneinfo/Europe/London Sun Mar 19 01:59:59 1972 UTC = Sun Mar 19 01:59:59 1972 GMT isdst=0 gmtoff=0 /usr/share/zoneinfo/Europe/London Sun Mar 19 02:00:00 1972 UTC = Sun Mar 19 03:00:00 1972 BST isdst=1 gmtoff=3600 /usr/share/zoneinfo/Europe/London Sun Oct 29 01:59:59 1972 UTC = Sun Oct 29 02:59:59 1972 BST isdst=1 gmtoff=3600 /usr/share/zoneinfo/Europe/London Sun Oct 29 02:00:00 1972 UTC = Sun Oct 29 02:00:00 1972 GMT isdst=0 gmtoff=0 /usr/share/zoneinfo/Europe/London Sun Mar 18 01:59:59 1973 UTC = Sun Mar 18 01:59:59 1973 GMT isdst=0 gmtoff=0 /usr/share/zoneinfo/Europe/London Sun Mar 18 02:00:00 1973 UTC = Sun Mar 18 03:00:00 1973 BST isdst=1 gmtoff=3600 /usr/share/zoneinfo/Europe/London Sun Oct 28 01:59:59 1973 UTC = Sun Oct 28 02:59:59 1973 BST isdst=1 gmtoff=3600 IT CONTINNUES UNTIL 1979 !.......... 

Como puedes ver, no vemos nada para 1970 !!!!

¿Alguien sabe cómo puedo cambiar la zona horaria de Debian, en mi propia?

Gracias,

Mr_Kaz

Mensaje antiguo: Hola, estoy enfrentando algunos problemas en un progtwig multiplataforma: cuando abro un shell de python en Linux y en Windows, no obtengo el mismo tiempo de la época.

En linux (debian squeeze):

 >>> import time >>> time.localtime() time.struct_time(tm_year=2011, tm_mon=5, tm_mday=30, tm_hour=10, tm_min=1, tm_sec=57, tm_wday=0, tm_yday=150, tm_isdst=1) >>> time.localtime(0) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=1, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0) 

En Windows (7 64 bits profesional):

 >>> import time >>> time.localtime() time.struct_time(tm_year=2011, tm_mon=5, tm_mday=30, tm_hour=10, tm_min=1, tm_sec=59, tm_wday=0, tm_yday=150, tm_isdst=1) >>> time.localtime(0) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0) 

Como puedes ver hay una hora de diferencia. Alguien sabe por qué ?

Gracias,

Mr_Kaz



Gracias por su respuesta, eso es lo que hice entonces: en Windows:

 >>> time.tzname ('GMT', 'GMT (heure d\x92\xe9t\xe9)') >>> time.timezone 0 >>> time.altzone -3600 >>> time.daylight 1 

en Linux:

 >>> time.tzname ('UTC', 'UTC') >>> time.timezone 0 >>> time.altzone 0 >>> time.daylight 0 

No quiero usar gmtime si no sé por qué hay un problema. Intenté cambiar el tiempo en Linux para obtener lo mismo que en Windows (comencé el desarrollo de mi software en Windows y funciona perfectamente, por eso quiero cambiar la hora del sistema en Linux y no en Windows). En Linux, intenté hacer dpkg-reconfigure tzdata . Pero lo que sea que elija el momento sigue equivocado.

Actualmente, en linux obtengo que avec el dpkg-reconfigure tzdata:

 Current default time zone: 'Europe/London' Local time is now: Mon May 30 10:29:52 BST 2011. Universal Time is now: Mon May 30 09:29:52 UTC 2011. 

No entiendo qué tiempo usé en Windows. Estoy usando ‘UTC’.



Creo este script:

 import time print time.tzname, time.timezone, time.altzone, time.daylight print time.localtime() print time.localtime(0) 

En linux que devuelve:

 ('GMT', 'BST') 0 -3600 1 time.struct_time(tm_year=2011, tm_mon=5, tm_mday=30, tm_hour=11, tm_min=35, tm_sec=8, tm_wday=0, tm_yday=150, tm_isdst=1) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=1, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0) 

En las ventanas que devuelve:

 ('GMT', 'GMT (heure d\x92\xe9t\xe9)') 0 -3600 1 time.struct_time(tm_year=2011, tm_mon=5, tm_mday=30, tm_hour=11, tm_min=40, tm_sec=1, tm_wday=0, tm_yday=150, tm_isdst=1) time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0) 

Y como puedes ver, todavía hay un problema de tiempo desde la Época (eran las 1 am en la época …)



Creo otro tema porque parece que ya no se debe a Python: problemas de zona horaria

¿La hora o la zona horaria están configuradas de manera diferente en cualquiera de sus PC?

http://docs.python.org/library/time.html#time.gmtime

El enlace anterior sugiere usar time.gmtime () para obtener el tiempo desde la época en UTC, en lugar de la hora local.

Esto es casi seguro debido a las diferentes configuraciones de zona horaria entre los dos entornos.

Examine time.tzname, time.timezone, time.altzone, time.daylight

Me doy cuenta de que esta es una pregunta antigua, pero estaba analizando algunos problemas en la misma área y pensé que compartiría:

De 1968 a 1972, el Reino Unido mantuvo BST durante todo el año.

Esto significa que no hubo cambios de horario de verano para Europa / Londres en esos años, por lo que los resultados de Linux son precisos allí. No hay duda de que hay una diferencia entre ‘GMT’ y ‘Europa / Londres’, ya que GMT se aplica a todos los países en esa zona horaria, no solo en el Reino Unido.

Ver, por ejemplo: http://wwp.greenwichmeantime.co.uk/daylight-saving-time/history-william-willetts.htm