1

私のアプリケーションでは、現地時間を GMT に、GMT を現地時間に変換したいだけです。これを行うには、次の2つの方法があります。

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を確認し、タイムゾーンをGMTから現地時間に変更するために使用DateTime::setTimezoneすることです。その逆も同様です。

DateTime::setTimestamp編集:そしてもちろん、またはを使用してこのDateTimeにタイムスタンプを入力できDateTime::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 に答える