date timezone timestamp localhost strtotime

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.