GMTオフセットに使用するPHPの日時ツール
質問
PHPで日付と時刻のマッサージにアプローチする方法はたくさんあるようです。私は通常、現地時間を扱うすべての人です。今日、UTCで作業する必要があります。
APIに対してクエリを実行していますが、任意のレコードについて提供されるデータは次のとおりです。 作成:木、2009年6月18日21:44:49 +0000 *「UTCレコード作成時間」として文書化
utc_offset:-28800 *ユーザー間の違い
それを単純な文字列に変換して、現地時間でデータが送信された日時をユーザーに示す必要があります。
たとえば、カリフォルニア州の場合、上記は次のように変換されます。 2009年6月18日木曜日午後2時44分49秒
私の目標は、date()に渡すことができる時間値を取得して、「きれいな」形式で簡単にフォーマットできるようにすることです。形式。
上記の作成された時間をエポックから秒に変換し、オフセットを追加し、それをdate()に渡すのと同じくらい簡単ですか?気を付けるべきゴチャはありますか?
$created_time = 'Thu, 18 Jun 2009 21:44:49 +0000';
$utc_offset = -28800;
$seconds = strtotime($created_time);
$localized_time = $seconds + $utc_offset;
echo date(DATE_RFC822, $localized_time);
ありがとう
解決
PHPは自動的に処理を行います。代わりにDateTimeオブジェクトを使用することを強くお勧めします。
$ dt = new DateTime($ created_time);
echo $ dt-> format(DATE_RFC2822);
PHPの日付と時刻の関数はタイムゾーンに対応しています。PHPの最新バージョンを使用していることを確認してください。これらのシステムの改善に多くの作業が行われているためです。
他のヒント
date_default_timezone_set を使用して、タイムゾーンを切り替えることができます。あなたの場合、ユーザーのプロファイルからタイムゾーン情報を渡します。 Evertが推奨するように、PHP 5> = 5.2を使用している場合は、より高度な DateTimeを使用してくださいクラス。
<?php
echo date('h:i:s')."\n";
date_default_timezone_set('Europe/Paris');
echo date('h:i:s')."\n";
date_Default_timezone_set('UTC');
echo date('h:i:s')."\n";