0

PHPで日付と時刻のマッサージにアプローチする方法はたくさんあるようです。私は通常、現地時間を扱っているだけです。今日、私はUTCで働く必要があります。

APIに対してクエリを実行していますが、任意のレコードについて提供されるデータは次のとおりです。作成日:2009年6月18日木曜日21:44:49+0000*「UTCレコード作成時間」として文書化

utc_offset:-28800*ユーザー間の違いre

これを単純な文字列に変換して、データが現地時間で送信された日時をユーザーに示す必要があります。

カリフォルニアの場合、上記は次のように解釈されると思います。たとえば、2009年6月18日木曜日02:44:49 PM

私の目標は、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);

ありがとう

4

2 に答える 2

2

PHPは自動的に処理を実行する必要があります。代わりにDateTimeオブジェクトを使用することを強くお勧めします。

$dt = new DateTime($created_time); echo $dt->format(DATE_RFC2822);

PHPの日付と時刻の関数は、タイムゾーンに対応しています。これらのシステムの改善には多くの作業が行われているため、最新バージョンのPHPを使用していることを確認してください。

于 2009-06-18T23:10:15.850 に答える
0

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";
于 2009-06-19T01:40:20.163 に答える