Quiero obtener la fecha de hoy dado un huso horario en formato de Paul Eggert (America/New_York
) en PHP?¿Obtener la fecha actual, dada una zona horaria en PHP?
Respuesta
Establecer la zona horaria predeterminada en primer lugar y obtener la fecha a continuación, la fecha será en la zona horaria que especifique:
<?php
date_default_timezone_set('America/New_York');
$date= date('m-d-Y') ;
?>
http://php.net/manual/en/function.date-default-timezone-set.php
<?php
date_default_timezone_set('GMT-5');//Set New York timezone
$today = date("F j, Y")
?>
Si tiene acceso a PHP 5.3, el intl extension es muy agradable para hacer cosas como esta.
He aquí un ejemplo del manual:
$fmt = new IntlDateFormatter("en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'America/Los_Angeles',IntlDateFormatter::GREGORIAN );
$fmt->format(0); //0 for current time/date
En su caso, se puede hacer:
$fmt = new IntlDateFormatter("en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
'America/New_York');
$fmt->format($datetime); //where $datetime may be a DateTime object, an integer representing a Unix timestamp value (seconds since epoch, UTC) or an array in the format output by localtime().
Como se puede establecer una zona horaria como America/New_York
, esto es mucho mejor que usar una Desplazamiento GMT o UTC, ya que esto también toma en cuenta los períodos de ahorro de luz diurna.
Finalmente, como la extensión intl usa datos de la ICU, que contiene muchas funciones muy útiles cuando se trata de crear sus propios formatos de fecha/hora.
Las otras respuestas establecen la zona horaria para todas las fechas de su sistema. Esto no siempre funciona bien si desea admitir varias zonas horarias para sus usuarios.
Aquí está la versión corta:
<?php
$date = new DateTime("now", new DateTimeZone('America/New_York'));
echo $date->format('Y-m-d H:i:s');
Obras en PHP> = 5.2.0
lista de zonas horarias compatibles: php.net/manual/en/timezones.php
Aquí hay una versión con un tiempo y ajuste existente zona horaria según configuración de usuario
<?php
$usersTimezone = 'America/New_York';
$date = new DateTime('Thu, 31 Mar 2011 02:05:59 GMT', new DateTimeZone($usersTimezone));
echo $date->format('Y-m-d H:i:s');
Aquí es una versión más detallado para mostrar el proceso un poco más claramente
<?php
// Date for a specific date/time:
$date = new DateTime('Thu, 31 Mar 2011 02:05:59 GMT');
// Output date (as-is)
echo $date->format('l, F j Y g:i:s A');
// Output line break (for testing)
echo "\n<br />\n";
// Example user timezone (to show it can be used dynamically)
$usersTimezone = 'America/New_York';
// Convert timezone
$tz = new DateTimeZone($usersTimezone);
$date->setTimeZone($tz);
// Output date after
echo $date->format('l, F j Y g:i:s A');
Bibliotecas
- Carbon - Una biblioteca fecha muy popular.
- Chronos - Un reemplazo directo para Carbon centrado en la inmutabilidad. Vea a continuación sobre por qué eso es importante.
- jenssegers/date - Una extensión de Carbon que agrega soporte multilingüe.
estoy seguro de que hay un número de otras bibliotecas disponibles, pero estos son unos pocos que estoy familiarizado.
Bono Lección: Inmutable Fecha Objetos
Mientras esté aquí, te voy a ahorrar algo de dolor de cabeza futuro. Digamos que quiere calcular 1 semana a partir de hoy y 2 semanas a partir de hoy. Es posible escribir algo de código como:
<?php
// Create a datetime (now, in this case 2017-Feb-11)
$today = new DateTime();
echo $today->format('Y-m-d') . "\n<br>";
echo "---\n<br>";
$oneWeekFromToday = $today->add(new DateInterval('P7D'));
$twoWeeksFromToday = $today->add(new DateInterval('P14D'));
echo $today->format('Y-m-d') . "\n<br>";
echo $oneWeekFromToday->format('Y-m-d') . "\n<br>";
echo $twoWeeksFromToday->format('Y-m-d') . "\n<br>";
echo "\n<br>";
La salida:
2017-02-11
---
2017-03-04
2017-03-04
2017-03-04
Hmmmm ... Eso no es lo que queríamos. La modificación de un objeto tradicional DateTime
en PHP no solo devuelve la fecha actualizada sino que también modifica el objeto original.
Aquí es donde entra en DateTimeImmutable
$today = new DateTimeImmutable();
echo $today->format('Y-m-d') . "\n<br>";
echo "---\n<br>";
$oneWeekFromToday = $today->add(new DateInterval('P7D'));
$twoWeeksFromToday = $today->add(new DateInterval('P14D'));
echo $today->format('Y-m-d') . "\n<br>";
echo $oneWeekFromToday->format('Y-m-d') . "\n<br>";
echo $twoWeeksFromToday->format('Y-m-d') . "\n<br>";
La salida:.
2017-02-11
---
2017-02-11
2017-02-18
2017-02-25
En este segundo ejemplo, obtenemos las fechas que esperábamos espalda. Al utilizar DateTimeImmutable
en lugar de DateTime
, evitamos mutaciones accidentales y prevemos posibles errores.
Apreciar la respuesta @DesignerGuy, pero aquí hay una * lista * adecuada de zonas horarias compatibles: http://php.net/manual/en/timezones.php –
Gracias @ChrisHarrison. Acabo de actualizar la respuesta. – DesignerGuy
Esta debería ser la respuesta aceptada y era justo lo que estaba buscando. ¡Gracias! – Brett
He creado una función simple que puede utilizar para convertir el tiempo a todas las zonas horarias:
function convertTimeToLocal($datetime,$timezone='Europe/Dublin') {
$given = new DateTime($datetime, new DateTimeZone("UTC"));
$given->setTimezone(new DateTimeZone($timezone));
$output = $given->format("Y-m-d"); //can change as per your requirement
return $output;
}
- 1. ruby get Tiempo en la zona horaria dada
- 2. Obtener la zona horaria actual en la aplicación de Android
- 3. Cómo obtener la zona horaria actual del usuario en C#
- 4. obtener usuario zona horaria
- 5. Cómo ignorar la zona horaria del usuario y forzar la fecha() utiliza la zona horaria específica
- 6. Fecha de PostgreSQL() con la zona horaria
- 7. Conversión de zona horaria en php
- 8. Mostrar fecha/hora UTC en fecha/hora de acuerdo con la zona horaria actual
- 9. ajustar la zona horaria
- 10. Python - fecha y hora de una zona horaria específica
- 11. Obtener la fecha y hora de la zona horaria del dispositivo iPhone actual desde la aplicación UTC-5 de la zona horaria y la aplicación iPhone?
- 12. impulso: obtener la local_date_time actual con la zona horaria actual de la máquina
- 13. PHP zona horaria no configurada
- 14. Analiza una fecha con la zona horaria "Etc/GMT"
- 15. ponerse en php - zona horaria emite
- 16. obtener los límites DST de una zona horaria dada en python
- 17. CÓMO OBTENER: Configuración de la zona horaria del servidor FTP?
- 18. Cómo convertir el tiempo de fecha de una zona horaria a otra zona horaria
- 19. ¿Cómo obtener la zona horaria del cliente?
- 20. Especifique la zona horaria de la fecha log4j
- 21. Compensación de una zona horaria dada desde GMT en la secuencia de comandos de linux shell
- 22. ¿Cómo se muestra una fecha con una zona horaria personalizada?
- 23. Powershell Mostrar la hora actual con la zona horaria
- 24. Cómo obtener clientes Zona horaria en JavaScript?
- 25. Convertir hora y fecha de una zona horaria a otra en PHP
- 26. Fecha en otra zona horaria: C++ en Linux
- 27. Rieles: obtenga #beginning_of_day en la zona horaria
- 28. .NET Obtener el desplazamiento de zona horaria por nombre de zona horaria
- 29. Ajuste de la zona horaria en PHP con DateTime/DateTimeZone
- 30. Mostrar la hora/fecha en la zona horaria específica utilizando la función de fecha()
Tenga en cuenta que el uso de 'date_default_timezone_set()' establece para todo el uso de 'date()' después de ese punto. Consulte mi respuesta para ver un ejemplo de cómo administrar varias zonas horarias. – DesignerGuy
Actualmente es una mala práctica si solo quiere obtener 1 fecha en esa zona horaria, consulte la respuesta de DesignerGuy a continuación para obtener una solución más concreta. –
Sería bueno tener una forma general de seleccionar la zona horaria. – Zan