想要将GMT日期时间转换为IST日期时间

时间:2013-12-17 07:27:20

标签: php datetime timezone

我想将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;

结果:1​​2-17-2013 18:34:02

我做错了什么?

3 个答案:

答案 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

See it working

如果你有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');
}