11

私はphpに不慣れです。ユーザーがDSTを含む任意の日付形式で日付をGMT形式に入力し、後で元の入力形式に戻す必要がある関数を作成したいのですが、どんな団体でも助けてください。

4

3 に答える 3

30

gmdate関数は利用可能ですが。PHP 5.2以降を使用している場合は、DateTimeオブジェクトの使用を検討してください。

GMTに切り替えるコードは次のとおりです

$date = new DateTime();
$date->setTimezone(new DateTimeZone('GMT'));

そしてデフォルトのタイムゾーンに戻ります...

$date = new DateTime('2011-01-01', new DateTimeZone('GMT'));
$date->setTimezone(new DateTimeZone(date_default_timezone_get()));

DateTimeオブジェクトを使用すると、インスタンスへの参照を保持することを除いて、手続き型関数と同じように日時を作成できます。

例えば

// Get a reference to Christmas of 2011, at lunch time.
$date = new DateTime('2011-12-25 13:00:00');

// Print the date for people to see, in whatever format we specify.
echo $date->format('D jS M y');

// Change the timezone to GMT.
$date->setTimezone(new DateTimeZone('GMT'));

// Now print the date/time it would in the GMT timezone
// as opposed to the default timezone it was created with.
echo $date->format('Y-m-d H:i:s');

// Just to show of some more, get the previous Sunday
$date->modify('previous Sunday');

使用できる関数はたくさんあり、手続き型関数よりもはるかに読みやすくなっています。


タイムゾーンからGMTへの変換の明示的な例

$melbourne = new DateTimeZone('Australia/Melbourne');
$gmt = new DateTimeZone('GMT');

$date = new DateTime('2011-12-25 00:00:00', $melbourne);
$date->setTimezone($gmt);
echo $date->format('Y-m-d H:i:s');
// Output: 2011-12-24 13:00:00
// At midnight on Christmas eve in Melbourne it will be 1pm on Christmas Eve GMT.

echo '<br/>';

// Convert it back to Australia/Melbourne
$date->setTimezone($melbourne);
echo $date->format('Y-m-d H:i:s');

アジア/コルカタからアメリカ/ニューヨークへの利用

date_default_timezone_set('Asia/Kolkata');
$date = new DateTime('2011-03-28 13:00:00');
$date->setTimezone(new DateTimeZone('America/New_York'));
echo $date->format("Y-m-d H:i:s");
//Outputs: 2011-03-28 03:30:00
于 2011-03-28T04:58:25.427 に答える
4

gmdate関数を使用して、GMT時間に変換します。

例えば

$d = '2011-03-28 12:05:20'; 
$gmt = gmdate('Y-m-d H:i:s',strtotime($d));
于 2011-03-28T04:45:52.143 に答える
0

//現地時間をgmtに変換します

    public function convertTime($timezone,$time){
        $selectedtime = date("Y-m-d H:i",strtotime($time));
        $date = new DateTime($selectedtime, new DateTimeZone($timezone));
        $date->setTimezone(new DateTimeZone('GMT'));
        $convertedtime = strtotime($date->format('Y-m-d H:i'));
        return $convertedtime;
    }
于 2016-03-01T11:43:28.650 に答える