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.
date_default_timezone_get
(PHP 5 >= 5.1.0)
date_default_timezone_get — Récupère le décalage horaire par défaut utilisé par toutes les fonctions date/heure d'un script
Description
Cette fonction retourne le décalage horaire en suivant l'ordre de préférences suivant :
-
Lecture du décalage horaire défini en utilisant la fonction date_default_timezone_set() (si elle existe)
-
Avant PHP 5.4.0 uniquement : Lecture de la variable d'environnement TZ (si elle n'est pas vide)
-
Lecture de la valeur de l'option de configuration date.timezone (si elle est définie)
-
Avant PHP 5.4.0 uniquement : Interrogation du système d'exploitation (si le système le supporte et l'autorise). Cette interrogation utilise un algorithme qui tente de deviner le décalage horaire. Aussi, le résultat peut ne pas être attendu dans certaine situation. Une alerte est affichée lorsque cette étape est atteinte. Inutile de la rapporter afin qu'elle soit corrigée, mais définissez plutôt date.timezone de façon plus correcte.
Si tout ce qui précède échoue, date_default_timezone_get() retournera le décalage horaire par défaut de UTC.
Valeurs de retour
Retourne une chaîne de caractères.
Historique
| Version | Description |
|---|---|
| 5.4.0 | La variable d'environnement TZ n'est plus utilisée pour deviner le décalage horaire. |
| 5.4.0 | Le décalage horaire n'est plus deviné depuis les informations disponibles via le système d'exploitation. |
Exemples
Exemple #1 Récupération du décalage horaire par défaut
<?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');
}
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
date_default_timezone_set : Europe/London date.timezone : Europe/London
Exemple #2 Récupération de l'abréviation d'un décalage horaire
<?php
date_default_timezone_set('America/Los_Angeles');
echo date_default_timezone_get() . ' => ' . date('e') . ' => ' . date('T');
?>
L'exemple ci-dessus va afficher :
America/Los_Angeles => America/Los_Angeles => PST
Voir aussi
- date_default_timezone_set() - Définit le décalage horaire par défaut de toutes les fonctions date/heure
- Liste des Fuseaux Horaires Supportés
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());
?>
To get offset string from offset:
<?php
function timezone_offset_string( $offset )
{
return sprintf( "%s%02d:%02d", ( $offset >= 0 ) ? '+' : '-', abs( $offset / 3600 ), abs( $offset % 3600 ) );
}
$offset = timezone_offset_get( new DateTimeZone( 'Pacific/Kiritimati' ), new DateTime() );
echo "offset: " . timezone_offset_string( $offset ) . "\n";
$offset = timezone_offset_get( new DateTimeZone( 'Pacific/Tahiti' ), new DateTime() );
echo "offset: " . timezone_offset_string( $offset ) . "\n";
?>
Output:
offset: +14:00
offset: -10:00
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
