Different timezone_types on DateTime object
datetime, php, postgresql, timezone
Solution
Timezones can be one of three different types in DateTime objects:
- Type 1; A UTC offset, such as in `new DateTime("17 July 2013 -0300");`
- Type 2; A timezone abbreviation, such as in `new DateTime("17 July 2013 GMT");`
- Type 3: A timezone identifier, such as in `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.
Problem
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?