php mktime para las devoluciones época -3600, no 0
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?
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)
Recursos: