Skip to content
Advertisement

PHP convert UTC time to local time

Am getting a UTC time from my server like the following format, my requirement is to convert the UTC time to local time. So users can see a user friendly time on their browser based on their timezone. Please help me to solve this issue. Thank you

$utc = "2014-05-29T04:54:30.934Z"

I have tried some methods but not working in my case

First

$time = strtotime($utc);
$dateInLocal = date("Y-m-d H:i:s", $time);
echo $dateInLocal;

Second

$time = strtotime($utc .' UTC');
$dateInLocal = date("Y-m-d H:i:s", $time);
echo $dateInLocal;

Advertisement

Answer

The reason your code isn’t working is most likely because your server is in UTC time. So the local time of the server is UTC.

Solution #1

One potential solution is to do the following server side and pass the epoch integer to the browser:

$utc = "2014-05-29T04:54:30.934Z";
$time = strtotime($utc); //returns an integer epoch time: 1401339270

Then use JavaScript to convert the epoch integer to the user’s local time (the browser knows the user’s timezone).

Solution #2

You can get the browser to send you the user’s timezone. Then you can use this information to calculate the date string server side instead of browser side. See more here: https://stackoverflow.com/a/5607444/276949

This will give you the user’s offset (-7 hours). You can use this information to set the timezone by looking here: Convert UTC offset to timezone or date

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement