私はphpに不慣れです。ユーザーがDSTを含む任意の日付形式で日付をGMT形式に入力し、後で元の入力形式に戻す必要がある関数を作成したいのですが、どんな団体でも助けてください。
質問する
38456 次
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 に答える