Différents types de fuseau horaire sur l'objet DateTime
J'utilise Doctrine2 sur Postgres. Dans une table, j'ai deux types de dates différents: birthdate:date
et created_at:datetimetz
. Les deux deviennent un objet DateTime mais avec timezone_type
différent.
Voici les listes:
created_at
datetimetz:
DateTime Object
(
[date] => 2013-04-18 11:54:34
[timezone_type] => 1
[timezone] => +02:00
)
birthdate
date:
DateTime Object
(
[date] => 1970-01-01 00:00:00
[timezone_type] => 3
[timezone] => Europe/Berlin
)
J'ai besoin de formater mes objets de la même manière. Les deux devraient avoir timezone_type=3
.
Comment puis-je y parvenir?
1 réponses
Les fuseaux horaires peuvent être l'un des trois types différents dans les objets DateTime:
- Type 1; un décalage UTC, tel que dans
new DateTime("17 July 2013 -0300");
- Type 2; une abréviation de fuseau horaire, comme dans
new DateTime("17 July 2013 GMT");
- Type 3: un identifiant de fuseau horaire, tel que dans
new DateTime( "17 July 2013", new DateTimeZone("Europe/London"));
Seuls les objets DateTime avec des fuseaux horaires de type 3 attachés permettront L'heure d'été correctement.
Afin d'avoir toujours le type 3, vous devrez stocker le fuseau horaire dans votre base de données en tant qu'identifiants acceptés à partir de cette liste et appliquez-le à votre objet DateTime lors de l'instanciation.