Foros del Web » Programando para Internet » PHP »

DST en mktime

Estas en el tema de DST en mktime en el foro de PHP en Foros del Web. Hola En el mktime tiene un parametro para la cambio de horario que hay un muchos paises, pero yo me pongo a dudar de la ...
  #1 (permalink)  
Antiguo 31/07/2006, 15:12
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 9 meses
Puntos: 10
DST en mktime

Hola

En el mktime tiene un parametro para la cambio de horario que hay un muchos paises, pero yo me pongo a dudar de la exactitud del mktime en ese sentido, porque en Brazil es variable la fecha de inicio y de finalizacion del horario de verano es variable e incluso he escuchado muchas quejas en ciertas aplicaciones prefabricadas usando el DST principalmente por la inexactitud del mktime()

Aqui pueden leer los diferentes DST, y que por ejemplo en brazil el intervalo de tiempo es variable http://en.wikipedia.org/wiki/Dayligh...ng_Time#Brazil

Alguien puede decirme sus comentarios y sugerencia, para evitar estas inexactitudes y obtener el cambio correcto DST


Gracias de antemano
  #2 (permalink)  
Antiguo 31/07/2006, 22:09
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 9 meses
Puntos: 10
Nadie sabe?
  #3 (permalink)  
Antiguo 01/08/2006, 07:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
En principio no sé por qué le hechas la culpa a "mktime()" .. (de PHP) .. la hora que esa función entrega es la que el Sistema (Operativo) de tu servidor entrega .. si esa es mál obtenida o no es correcta .. eso es otro tema.

Por mi parte lo que hago es conectarme al servidor NTP (Network Time Protocol) del pais en cuestión que dá la hora oficial y así sincronizo la hora del servidor y .. como te comenté este a su vez se nutren las funciones que obtienen la fecha/hora de cualquier lenguaje (como PHP) o tu motor de BBDD (el que uses).

Por lo menos así lo hago para la hora "continental" de Chile oficial y no tengo problemas con los cambios horarios por estaciones ...

http://www.ntp.org/

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 01/08/2006, 09:40
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 9 meses
Puntos: 10
Disculpame si molesto por ser tan pregunton, y te agradesco tus respuestas

Descarge el pack de ntp y he estado leyendo la documentacion parece ser que debo instalarlo en el servidor como tu bien dices sincroniza la hora de los servidores pool con el servidor web

Pero como tengo varios subdominios, uno para cada pais entonces segun el pais debo obtener la hora correspondiente, incluyendo la correccion DST, la cual obtendria de los servidores NTP, supongo que podria usar la funcion fread() de PHP para obtener la hora.

mktime
http://mx.php.net/mktime es bueno, pero el argumento que tiene mktime para el DST segun la documentacion es obsoleto e incluso me parece que seria dificil para PHP obtener que dia debe hacer el ajuste DST, segun el pais , como el cambio de horario (DST) es variable entre paises (su inicio y fin), entonces podria ser inexacto, el dia del cambio horario ¿no crees?

El problema es que al parecer (aunque no estoy muy seguro) es que NTP usa algun tipo de decodificacion

Me gustaria me puedas aclarar si puedo acceder a los Servidores NTP de los diferentes paises directamente desde PHP

Gracias Cluster, y espero no te hayas molestado conmigo

Última edición por August; 01/08/2006 a las 09:47
  #5 (permalink)  
Antiguo 01/08/2006, 10:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
NO sé si habrá configuración "personalizada" como para que puedas definir eso por servidor virtual de los que maneje tu servidor HTTP.

Con PHP podrías conectarte a un servidor NTP (con su própio protocolo) .. al servidor NTP que te dé la hora del País que necesites .. ese proceso lo tendrías que ejecutar a intervalos .. por lo menos una vez al día? .. y así obtener tu diferencia horaria a aplicar o detectar si cambió el horario.

http://www.php-editors.com/contest/1/6-read.html

Por otro lado si usas PHP 5.1 .. Tienes a tu disposición funciones de tratamiento de fechas que te podrían ayudar (De hecho en la documentación oficial de mktime() hace mención a que el parámetro DST de esta función para PHP 5.1 se hace obsoleto y que deberíamos usar estas otras funciones para tal fin):

date_default_timezone_get
date_default_timezone_set
date_sunrise
date_sunset

Revisa los comentarios de los usuarios de la función mktime() (www.php.net/mktime) veras bastantes propuestas y comentarios sobre el tema "DST"

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 01/08/2006, 18:09
 
Fecha de Ingreso: febrero-2005
Mensajes: 626
Antigüedad: 19 años, 9 meses
Puntos: 10
Gracias. muchas gracias Cluster

El script php que me dijiste funciona solo con algunos servidores NTP no con todos, parece que la salida que algunos dan es "incompatible" ya que comprobe que si estaban "UP" otros mas estan inactivos, solo algunos si estan funcionando y son compatibles con el script, lo malo es para algunos paises que solo tienen unos cuantos servidores, tambien verifique los servidores secundarias, primarias, e incluso los Pool servers que son varios servidores en Round Robin son incompatibles con el Script

La funcion en particular date_default_timezone_set

me parece muy interezante, porque tiene una exactitud por regiones dentro de los paises, pero lamentablemente no dice en la documentacion si incluye su correccion DST y si las correciones las hace en las fechas segun el "gobierno" de cada pais, dado que el parametro seria dado asi, ejemplo
Código PHP:
date_default_timezone_set ("America/Mexico_City"
Voy a hacer mas pruebas acerca de esto

Gracias y saludos Cluster

Última edición por August; 01/08/2006 a las 18:19
  #7 (permalink)  
Antiguo 01/08/2006, 18:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por August
Gracias. muchas gracias Cluster

El script php que me dijiste funciona solo con algunos servidores NTP no con todos, parece que la salida que algunos dan es "incompatible" ya que comprobe que si estaban "UP" otros mas estan inactivos, solo algunos si estan funcionando y son compatibles con el script, lo malo es para algunos paises que solo tienen unos cuantos servidores, tambien verifique los servidores secundarias, primarias, e incluso los Pool servers que son varios servidores en Round Robin son incompatibles con el Script

La funcion en particular date_default_timezone_set

me parece muy interezante, porque tiene una exactitud por regiones dentro de los paises, pero lamentablemente no dice en la documentacion si incluye su correccion DST y si las correciones las hace en las fechas segun el "gobierno" de cada pais, dado que el parametro seria dado asi, ejemplo
Código PHP:
date_default_timezone_set ("America/Mexico_City"
Voy a hacer mas pruebas acerca de esto

Gracias y saludos Cluster
OK, ya nos contaras ... El tema sigue abierto por si alguien domina más el tema y nos puede orientar.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:15.