Pregunta

Si funciono el siguiente en PHP:

echo mktime (0,0,0,1,1,1970);

el valor devuelto es -3600, no 0 como yo esperaba.

El servidor está basado en el Reino Unido, que es actualmente del 21 (SEP es decir BST verano) (aunque yo no esperaría que esto afecte la marca de tiempo época) y por php.info: "La zona horaria predeterminada Europa / Londres"

Configuración de la hora de verano bandera tiempo, también, de la siguiente manera, da:

echo mktime (0,0,0,1,1,1970,0); (Es decir, el indicador de DST correcta, 0 como de 1 Jan no DST / BST) retornos -3600

echo mktime (0,0,0,1,1,1970,1); (El indicador incorrecto - el ajuste 1 JAN como el horario de verano) retornos -7200

echo mktime (0,0,0,1,1,1970, -1); (Es decir, indicador de DST no set - dejó a PHP para decidir) retornos -3600

¿Alguien sabe por qué la época se devuelve como -3600, no es 0, por favor?

¿Fue útil?

Solución

Cuando era medianoche del 1 Ene 1970 en tiempo de verano británica , que era una hora para la medianoche en el meridiano de Greenwich. Intente configurar la zona horaria a UTC en su lugar:

date_default_timezone_set('UTC'); // or just change php.ini

Otros consejos

mktime() se basa en su zona horaria actual. Si desea crear una marca de tiempo basado en GMT usted tiene que utilizar la función gmmktime().

gmmktime(0,0,0,1,1,1970)

código en Ideone


Recursos:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top