我想将GMT日期时间转换为IST日期时间为此目的我已经尝试了下面的代码但没有获得所需的结果。
function ConvertGMTToLocalTimezone($gmttime,$timezoneRequired)
{
$system_timezone = date_default_timezone_get();
date_default_timezone_set("GMT");
$gmt = date("Y-m-d h:i:s A");
$local_timezone = $timezoneRequired;
date_default_timezone_set($local_timezone);
$local = date("Y-m-d h:i:s A");
date_default_timezone_set($system_timezone);
$diff = (strtotime($local) - strtotime($gmt));
$date = new DateTime($gmttime);
$date->modify("+$diff seconds");
$timestamp = $date->format("m-d-Y H:i:s");
return $timestamp;
}
$ISTtime=ConvertGMTToLocalTimezone('Tue, 17 Dec 2013 07:23:56 +0000','Asia/Calcutta');
echo $ISTtime;
结果:12-17-2013 18:34:02
我做错了什么?
答案 0 :(得分:1)
你为什么不这样做:
$timestamp = strtotime('Tue, 17 Dec 2013 07:23:56 +0000');
date_default_timezone_set("Asia/Calcutta");
echo date('r', $timestamp);
输出
Tue, 17 Dec 2013 12:53:56 +0530
答案 1 :(得分:0)
你可以尝试这个吗,你可以使用$new = new DateTimeZone('Asia/Kolkata');//IST
$new = new DateTimeZone('Asia/Kolkata');//IST
$date = new DateTime(gmdate("m/d/Y H:i:s"), 'Tue, 17 Dec 2013 07:23:56 +0000');
$date->setTimezone($new);
echo $date->format('m-d-Y H:i:s');
答案 2 :(得分:0)
这是使用dateTime类的简单练习: -
function ConvertGMTToLocalTimezone($gmttime,$timezoneRequired)
{
$date = new \DateTime('Tue, 17 Dec 2013 07:23:56 +0000');
$date->setTimeZone(new \DateTimezone($timezoneRequired));
return $date->format('D, d M Y H:i:s O');
}
$ISTtime=ConvertGMTToLocalTimezone('Tue, 17 Dec 2013 07:23:56 +0000','Asia/Calcutta');
echo $ISTtime;
输出: -
Tue, 17 Dec 2013 12:53:56 +0530
如果你有PHP> = 5.4 this will work: -
function ConvertGMTToLocalTimezone($gmttime,$timezoneRequired)
{
return (new \DateTime('Tue, 17 Dec 2013 07:23:56 +0000'))->setTimeZone(new \DateTimezone($timezoneRequired))->format('D, d M Y H:i:s O');
}