Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Converting PHP DateTime Object from One Timezone to Another

I have a PHP DateTime Object where the timezone has already been set to America/New_York.

I’d like to clone this object and and change the timezone of the clone to be UTC.

The resulting time should be the same moment, but the time of day should be adjusted for the new timezone.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Most examples I see suggest converting to and from string formats, which I’m not getting accurate results with.

>Solution :

To clone a PHP DateTime object and change the timezone of the clone to UTC, you can utilize the DateTime::setTimezone method along with the DateTime::format method to create a new DateTime object.

Here’s an example code snippet that demonstrates this:

$originalDateTime = new DateTime('now', new DateTimeZone('America/New_York'));

// Clone the original DateTime object
$clonedDateTime = clone $originalDateTime;

// Change the timezone of the cloned object to UTC
$clonedDateTime->setTimezone(new DateTimeZone('UTC'));

// Get the formatted date and time in UTC
$utcDateTimeString = $clonedDateTime->format('Y-m-d H:i:s');

echo 'Original DateTime: ' . $originalDateTime->format('Y-m-d H:i:s') . ' ' . $originalDateTime->getTimezone()->getName() . "\n";
echo 'Cloned DateTime (UTC): ' . $utcDateTimeString . ' ' . $clonedDateTime->getTimezone()->getName() . "\n";

In the above code, we first create the original DateTime object with the timezone set to ‘America/New_York’. Then, we clone the original DateTime object using the clone keyword to create a new object with the same date and time values. Next, we change the timezone of the cloned object to ‘UTC’ using the setTimezone method. Finally, we retrieve the formatted date and time in the UTC timezone using the format method.

The output will display the original DateTime in the ‘America/New_York’ timezone and the cloned DateTime in the ‘UTC’ timezone.

Note: It’s important to use the clone keyword when creating the clone of the DateTime object to ensure that the original object remains unaffected.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading