Explorer
Explorer

Reputation: 177

Want to convert GMT date time to IST Date Time

i want to convert GMT date time to IST Date Time for that purpose i have tried below code but not getting desired result.

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;

Result: 12-17-2013 18:34:02

What i am doing wrong?

Upvotes: 0

Views: 6154

Answers (3)

vascowhite
vascowhite

Reputation: 18440

This is a trivial exercise using the dateTime classes:-

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;

Output:-

Tue, 17 Dec 2013 12:53:56 +0530

See it working

If you have 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');
}

Upvotes: 0

Krish R
Krish R

Reputation: 22721

Can you try this, you can use $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');

Upvotes: 0

Vineet1982
Vineet1982

Reputation: 7918

Why don't you simply do this:

$timestamp = strtotime('Tue, 17 Dec 2013 07:23:56 +0000');
date_default_timezone_set("Asia/Calcutta");
echo date('r', $timestamp);

output

 Tue, 17 Dec 2013 12:53:56 +0530

Upvotes: 1

Related Questions