date - Servidor strtotime incorrecto
timezone laravel (1)
Tanto strtotime como mktime están produciendo una marca de tiempo incorrecta y me está volviendo loco.
Si agrego el siguiente strtotime (''2012-10-09'');
Me sale 1349701200
Que en realidad es lunes, 08 de octubre de 2012 13:00:00 GMT
Estoy usando mi servidor local, ejecutando MAMP. Supongo que es un problema de zona horaria del servidor, o algo así, pero no entiendo por qué o cómo solucionarlo.
¿Alguna ayuda?
strtotime usa la zona horaria predeterminada para interpretar la cadena. Si desea una zona horaria diferente, puede especificarla explícitamente o cambiarla para todas las llamadas:
<?php
if (date_default_timezone_get()) {
echo ''date_default_timezone: '' . date_default_timezone_get()."/n";
}
echo strtotime(''2012-10-09'')."/n"; # default timezone
echo strtotime(''2012-10-09 UTC'')."/n";
date_default_timezone_set(''UTC'');
echo strtotime(''2012-10-09'')."/n";
?>
Salida
date_default_timezone: Europe/London
1349737200
1349740800
1349740800
POSIX timestamp cuenta el número de segundos desde 1970-01-01 00:00:00 UTC . Por ejemplo, la medianoche (00:00) en Nueva York puede ser a las 20:00 en hora UTC en esta época del año (la misma marca de tiempo POSIX). Pero 00:00 en UTC y 00:00 en Nueva York corresponden a diferentes momentos en el tiempo (diferentes marcas de tiempo POSIX). Los relojes locales suelen seguir al Sol (aproximadamente hablando) e incluso si es de noche donde estás; el Sol brilla en algún lugar de la Tierra.