PHP Dates with Timezone
If you have not already, you will inevitably come across a problem of having to convert dates for user’s timezones. Factor into that daylight savings time and things can get quite messy. As of php 5.2.0, PHP provides a DateTime class to simplify the process of timezones and their offsets.
Let’s see how we get the date using the new DateTime class.
$theDate = new DateTime();
Leaving DateTime() empty will get the current time. Alternatively if you have a date you want to use, provide it as follows.
$theDate = new DateTime(‘2012-02-24 11:25:00’);
This creates a new DateTime object, $theDate.
For this example, we manually set the user timezone as:
$usertz = 'America/Los_Angeles';
By default the DateTime object $theDate uses the timezone from the server.
Now let’s set the timezone for the given object.
To display the time we can simply use the DateTime format method. This takes on the PHP date() formatting options.
echo $theDate->format('Y-m-d H:i:s')."\n";
So our full example looks like:
$theDate = new DateTime(); $usertz = 'America/Los_Angeles'; $theDate->setTimezone(new DateTimeZone($usertz)); echo $theDate->format('Y-m-d H:i:s')."\n";
Quite simple really. There are much more options and features available than the simple example I have provided. For more information visit the PHP DateTime documentation.