I use Doctrine2 on Postgres. In one table I have got two different date types: birthdate:date
and created_at:datetimetz
. Both become DateTime object but with different timezone_type
.
Here are listings:
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
)
I need to format my objects in the same way. Both should have timezone_type=3
.
How can I achieve that?
Timezones can be one of three different types in DateTime objects:
new DateTime("17 July 2013 -0300");
new DateTime("17 July 2013 GMT");
new DateTime( "17 July 2013", new DateTimeZone("Europe/London"));
Only DateTime objects with type 3 timezones attached will allow for DST correctly.
In order to always have type 3 you will need to store the timezone in your database as accepted identifiers from this list and apply it to your DateTime object on instantiation.
I know this is an ancient post, but since Doctrine was mentioned, I feel the need to share what I've recently experienced regarding this issue.
@vascowhite is correct, but regarding Doctrine (at least on my configuration) dates sent to the server (e.g. to save) via HTTP are converted timezone type 2. Doctrine handles them properly and saves the date correctly, but it does not convert the timezone type.
If you are performing a "save and and return fresh values" type operation, note that Doctrine will use the cached value (with timezone_type 2). This becomes important when you are expecting timezone_type 3 as you would normally get during a page reload. We have a custom date converter JS class that expects timezone_type 3 and it was unable to convert it. Admittedly, the date converter should account for this, but also one should be aware that the timezone type will be the last loaded value in Doctrine. Clearing Doctrine's cache after saving will force the data to reload with timezone_type 3.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With