Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

convert to UTC without changing php timezone settings

Tags:

timezone

php

utc

How can I convert the time zone of a date string in php without changing the default time zone. I want to convert it locally to display only. The php time zone settting should not be modified.

EDIT: My source time is a UTC string, I want to convert it to a different format, retaining the time zone as UTC, but php is converting it to local timezone. The code I used was:

date('Y-m-d H:i::s',strtotime($time_str));

How do I retain timezone?

like image 528
cldy1020 Avatar asked Jan 16 '23 14:01

cldy1020


1 Answers

$src_tz = new DateTimeZone('America/Chicago');
$dest_tz = new DateTimeZone('America/New_York');

$dt = new DateTime("2000-01-01 12:00:00", $src_tz);
$dt->setTimeZone($dest_tz);

echo $dt->format('Y-m-d H:i:s');

Note that if the source time is UTC, you can change the one line to this:

$dt = new DateTime("2000-01-01 12:00:00 UTC");

Edit: Looks like you want to go to UTC. In that case, just use "UTC" as the parameter to the $dest_tz constructor, and use the original block of code. (And of course, you can omit the $src_tz parameter if it is the same as the default time zone.)

like image 166
Matthew Avatar answered Jan 25 '23 15:01

Matthew