2012-09-10 121 views
0

在我的申请,我只是想在本地时间GMT和GMT转换为本地时间。我有以下两种方法可以做到这一点。PHP 5.2.17:当地时间转换为GMT和GMT本地时间

function GmtTimeToLocalTime($date) { 
    $gmt_time = date("Y-m-d H:i:s", $date); 
    date_default_timezone_set("UTC"); 
    $timestamp_in_gmt = strtotime($gmt_time); 
    date_default_timezone_set('Asia/Calcutta'); 
    $local_time = date("Y-m-d H:i:s", $timestamp_in_gmt); 
    //date_default_timezone_set("UTC"); 
    return $local_time; 
} 

function LocalTimeToGmtTime($date) { 
    $local_time = date("Y-m-d H:i:s", $date); 
    date_default_timezone_set('Asia/Calcutta'); 
    $timestamp_in_localtime = strtotime($local_time); 
    date_default_timezone_set("UTC"); 
    $gmt_time = date("Y-m-d H:i:s", $timestamp_in_localtime); 
    //date_default_timezone_set('Asia/Calcutta'); 
    return $gmt_time; 
} 

但是我得到了这个日期1970-01-01的所有输入。

请为我提供正确的方法。 在此先感谢

+0

为LocalTimeToGmtTime() - 1969-12-31 12点03分32秒的成绩 – Sridhar

+0

为GmtTimeToLocalTime() - 1970-01-01 6时02分49秒的成绩 – Sridhar

回答

2

或许,如果你用DateTime对象尝试,你会得到更好的结果:

<?php 
function GmtTimeToLocalTime($time) { 
    $date = new DateTime(date('Y-m-d h:i:s',$time),new DateTimezone('UTC')); 
    $date->setTimezone(new \DateTimezone('Asia/Calcutta')); 
    return $date->format("Y-m-d H:i:s"); 
} 
+0

$日期=新的日期时间:: createFromFormat ('U',$ time,new DateTimeZone('UTC'));编译出错 - 需要$符号 – Sridhar

+0

哼不需要$,但需要删除“新”,这是一个错字 – artragis

+0

由于现在它的工作 – Sridhar

2

的快捷方式应该是看DateTime,并使用DateTime::setTimezone修改与GMT时区为本地时间,反之亦然。

编辑:当然,您可以使用DateTime::setTimestampDateTime::createFromFormat填写此DateTime与您的时间戳。

0

通行证在下面的函数来获得时区经纬度。

function getTimezoneGeo($latForGeo, $lngForGeo) { 
     $json = file_get_contents("http://api.geonames.org/timezoneJSON?lat=".$latForGeo."&lng=".$lngForGeo."&username=demo"); 
     $data = json_decode($json); 
     $tzone=$data->timezoneId; 
     return $tzone; 
    } 
相关问题