Dib*_*ish 9 php timezone datetime
我从我的服务器获得UTC时间,如下面的格式,我的要求是将UTC时间转换为本地时间.因此,用户可以根据他们的时区在浏览器上看到用户友好的时间.请帮我解决这个问题.谢谢
$utc = "2014-05-29T04:54:30.934Z"
Run Code Online (Sandbox Code Playgroud)
我尝试了一些方法但不适用于我的情况
第一
$time = strtotime($utc);
$dateInLocal = date("Y-m-d H:i:s", $time);
echo $dateInLocal;
Run Code Online (Sandbox Code Playgroud)
第二
$time = strtotime($utc .' UTC');
$dateInLocal = date("Y-m-d H:i:s", $time);
echo $dateInLocal;
Run Code Online (Sandbox Code Playgroud)
Phi*_*hil 13
只需使用DateTimeZone,例如
$dt = new DateTime($utc);
$tz = new DateTimeZone('Asia/Kolkata'); // or whatever zone you're after
$dt->setTimezone($tz);
echo $dt->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)
Mar*_*cny 12
您的代码无法正常工作的原因很可能是因为您的服务器处于UTC时间.所以服务器的本地时间是 UTC.
一个可能的解决方案是执行以下服务器端并将epoch整数传递给浏览器:
$utc = "2014-05-29T04:54:30.934Z";
$time = strtotime($utc); //returns an integer epoch time: 1401339270
Run Code Online (Sandbox Code Playgroud)
然后使用JavaScript将纪元整数转换为用户的本地时间(浏览器知道用户的时区).
您可以让浏览器向您发送用户的时区.然后,您可以使用此信息来计算日期字符串服务器端而不是浏览器端.在此处查看更多信息:https://stackoverflow.com/a/5607444/276949
这将为您提供用户的偏移量(-7小时).您可以使用此信息通过查看此处来设置时区:将UTC偏移量转换为时区或日期