1

在我的应用程序中,我只想将本地时间转换为 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。

请给我正确的方法。提前致谢

4

3 回答 3

3

也许如果您尝试使用 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");
 }
于 2012-09-10T07:23:06.347 回答
2

一个快捷方式应该是查看DateTime并用于DateTime::setTimezone将时区从 GMT 修改为本地时间,反之亦然。

编辑:当然,您可以使用您的时间戳填充此 DateTimeDateTime::setTimestampDateTime::createFromFormat

于 2012-09-10T07:20:55.763 回答
0

在以下函数中传递 latlong 以获取时区。

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;
    }
于 2016-03-01T09:31:31.797 回答