In my case, I'm not sure I can guess the correct timezone any better than PHP and it's no where near important enough to nag the user, so...
<?php
// Suppress DateTime warnings
date_default_timezone_set(@date_default_timezone_get());
?>
date_default_timezone_get
(PHP 5 >= 5.1.0)
date_default_timezone_get — Obtiene la zona horaria predeterminada usada por todas las funciones de fecha/hora en un script
Descripción
En orden de preferencia, esta función devuelve la zona horaria predeternimada mediante:
-
Leer la zona horaria usando la función date_default_timezone_set() (si hay alguna)
-
Leer la variable de entorno TZ (si no está vacía) (Antes de PHP 5.3.0)
-
Leer el valor de la opción ini date.timezone (si está establecida)
-
Preguntar al sistema operativo (siempre que el SO lo soporte y lo permita). Utiliza un algoritmo que debe estimar la zona horaria. No funcionará de forma necesariamente correcta en todas las situaciones posibles. Si se diera este caso, se mostrará una alerta. No se aconseja depender de esta función. En su lugar, debe establecerse la zona horaria correcta con date.timezone
Si nada de lo de arriba sucedió, date_default_timezone_get() devolverá una zona horaria predeterminada de UTC.
Valores devueltos
Devuelve un string.
Historial de cambios
| Versión | Descripción |
|---|---|
| 5.3.0 | La variable de entorno TZ ya no se usa para adivinar la zona horaria. |
Ejemplos
Example #1 Obtener la zona horaria por defecto
<?php
date_default_timezone_set('Europe/London');
if (date_default_timezone_get()) {
echo 'date_default_timezone_set: ' . date_default_timezone_get() . '<br />';
}
if (ini_get('date.timezone')) {
echo 'date.timezone: ' . ini_get('date.timezone');
}
?>
El resultado del ejemplo sería algo similar a:
date_default_timezone_set: Europe/London date.timezone: Europe/London
Example #2 Obtener la abreviatura de una zona horaria
<?php
date_default_timezone_set('America/Los_Angeles');
echo date_default_timezone_get() . ' => ' . date('e') . ' => ' . date('T');
?>
El resultado del ejemplo sería:
America/Los_Angeles => America/Los_Angeles => PST
Ver también
- date_default_timezone_set() - Establece la zona horaria predeterminada usada por todas las funciones de fecha/hora en un script
- Listado de Timezones soportados
If you want to get the abbrivation (3 or 4 letter), instead of the long timezone string you can use date('T') function like this:
Input:
date_default_timezone_set('America/Los_Angeles');
echo date_default_timezone_get();
echo ' => '.date('e');
echo ' => '.date('T');
Output:
America/Los_Angeles => America/Los_Angeles => PST
date_default_timezone_get() will still emit a warning in E_STRICT if the timezone is not set; either by date_default_timezone_set() or the ini option of date.timezone.
This is probably not a big deal, but I thought I would contribute what I found.
