datetimezone - PHP date_default_timezone_set() Eastern Standard Time(EST)
timezone laravel (5)
Bueno, si realmente quieres X horas antes o después de una fecha UTC, haría esto:
$now = gmdate(''Y-m-d H:i:s'', time() - 3600 * $hours);
En su caso, $hours
serían 5, creo.
Como otros han sugerido, incluyéndome a mí mismo, esta no es una buena práctica ... Pero usted está consciente de eso.
Larga historia corta
¿Existe una zona horaria oficial, no desaprovechada, que PHP5 reconozca para la hora ESTANDAR oriental, no para la hora del este de DAYLIGHT?
Cuento largo :-P
Wow, no puedo creer que PHP crea un cluster-floogen para establecer el tiempo.
Me gustaría utilizar la fecha_default_timezone_set () de PHP5 para configurar la zona horaria de mi script. Quiero usar el tiempo estándar . No quiero que mi script observe el horario de verano. No quiero tener que usar gmtime () y restar 60 * 60 * 5 segundos cada vez que mi programa escribe una hora. Tampoco quiero guardar ese valor en una variable. Configurar la zona horaria predeterminada es más elegante y hace que la secuencia de comandos sea más portátil para otros servidores y configuraciones regionales.
Desafortunadamente, PHP requiere que use una de sus estúpidas "zonas horarias oficiales" al configurar la zona horaria predeterminada. Existe un "America / New_York" pero no tengo idea de si él o alguno de los husos horarios oficiales de PHP observan el horario de verano. A través de la experimentación, descubrí que "America / New_York" observa DST. "América / Panamá" es EST y, por lo tanto, no observa el horario de verano ... pero ¿qué pasa si Panamá alguna vez cambia de opinión sobre el horario de verano en el futuro? (Ellos observaron DST en 1908)
Porque Panamá siempre podría cambiar de opinión; Solo quiero usar el desplazamiento GMT o UTC.
Luego está esto ...
http://us.php.net/manual/en/timezones.others.php
El enlace de arriba enumera lo que supongo que son zonas horarias obsoletas. "EST" está ahí, pero está muy centrado en los EE. UU., Así que entiendo por qué está obsoleto. "Ect / GMT-5" también está allí y no tengo ni idea de por qué está en desuso. Si me preguntas, todas las zonas horarias de los nombres de los lugares deben estar obsoletas y las zonas horarias GMT sin desaprobar ... pero obtén esto ... "¡Ect / GMT-5" es realmente incorrecto! Tuve que usar "Ect / GMT + 5" para obtener la hora estándar del este de EE. UU. Estoy bastante seguro de que no estoy 5 horas adelante de Inglaterra aquí en la costa este.
¿Contestada?
Nadie realmente respondió la pregunta. Así que supongo que lo responderé yo mismo. "No, no hay una zona horaria no desaprobada que PHP5 reconozca para la hora ESTANDAR oriental"
Mucha gente me dijo que debería almacenar las fechas como hora UTC y traducirlas a la hora local cuando las saque del almacenamiento, algo que ya sé. El problema es que me contrataron para arreglar solo esta pequeña parte del guión y dudo que el tipo me permita volver a escribir todo el código que ha estado usando desde el comienzo de PHP, supuestamente.
A regañadientes le daré crédito al tipo que te muestra cómo almacenar y recuperar los tiempos correctamente para que las personas que estén buscando esto aprendan cómo hacerlo de la manera correcta.
Lo que desea hacer no es práctico y hará que sus usuarios lo odien.
La razón entera detrás de las zonas horarias nombradas es representar con precisión la hora local . La representación de la hora "Estándar" como hora local cuando ese área local está dentro del horario de verano es objetivamente incorrecta. Cualquier persona dentro de esa zona horaria que lea el tiempo va a estar mal informada.
Si necesita almacenar y trabajar con fechas y horas que ignoran las zonas horarias, entonces use UTC para ese fin, es decir, almacenamiento y matemática normal. Vale la pena recordar que incluso la buena marca de tiempo de Unix es "segundos después de la medianoche, 1 de enero de 1970, UTC ".
Si necesita representar las horas locales para el usuario, debe permitir que seleccionen su zona horaria local y la conviertan en pantalla . Los modernos DateTime y DateTimeZone de PHP simplifican esto. Desde el prompt interactivo:
php > $utc = new DateTimeZone(''UTC'');
php > $amla = new DateTimeZone(''America/Los_Angeles'');
php >
php > $two_past_midnight = new DateTime(''2011-04-05 00:02'', $utc);
php > $two_past_midnight->setTimeZone($amla);
php > echo $two_past_midnight->format(''Y-m-d H:i:s'');
2011-04-04 17:02:00
Sin desorden, sin problemas. Nos ocupó de las matemáticas cuando cambiamos la zona horaria.
En la alternativa, si realmente quieres realmente aplanar las zonas horarias DST, mira getTransitions
y getOffset
en combinación con los diversos formatos de huso horario date()
, I
en particular. Puede puntear y pinchar la información resultante para encontrar cuándo la versión "estándar" de cualquier zona de horario de verano sigue las transiciones y ajustarla en consecuencia. Recuerde que las diferentes áreas de transición en diferentes momentos, y no todas las áreas de transición en la misma cantidad ... y algunos no hacen la transición en absoluto. Creo que alguien ya mencionó a Indiana .
Normalmente también proporcionaría un código de muestra aquí, pero la matemática de la fecha me llena de una sed insaciable de violencia. Quien decidió que 60, 60, 24, 7, 4-6, 12 y 52 eran formas aceptables de pensar acerca de los tiempos y las fechas, eran gente malvada y malvada. Afortunadamente, todos han estado muertos durante cientos y miles de años.
Siempre debe almacenar las horas usando UTC, que es lo que devuelve time()
, luego configure la zona horaria según la ubicación del servidor, que se actualizará para el horario de verano, si corresponde.
America/New_York
sí observa DST y es la zona horaria recomendada. (Fui a una conferencia el año pasado donde habló Derick Rethans , que escribió mucho sobre el código de fecha / hora). La idea detrás de las zonas horarias regionales es que obedecen las reglas de zona horaria para la ciudad / región que denotan (razón por la cual hay como 7 zonas horarias de Indiana).
echo '' Format '' . date(''m/d/Y H:i:s a'') ;
<br/>//maketime function- mktime(hour,minute,second,month,day,year,is_dst)
<br/>$EasternTimeStamp =mktime(date(''H'')-6,date(''i''),date(''s''),date("m"),date("d"),date("Y"));
<br/>// date function- date(format, timestamp)
<br/>echo ''Format '' . date(''m/d/Y H:i:s a'',$EasternTimeStamp) ;