- 締切済み
アクセスクライアントごとにタイムゾーンを取得したい
こんにちは。 サーバ側で持っているあるUTC時間「2011-06-22 13:20」(左記は例です)を を基にアクセスしてきたクライアントの国のタイムゾーンに合わせて表示させたいと 考えておりまが、PHPでそのような処理は可能でしょうか? (例えば上記の時間を日本時間に直す場合は、2011-06-22 13:20に対して+9時間として処理) 宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- masa6272
- ベストアンサー率66% (93/140)
PHPのバージョンはいくつでしょう? 私の環境で実行したら、次のような結果になりました。 Asia/Tokyo が、クライアントのタイムゾーンです。 問題は、タイムゾーンの判定です。 それを渡す方法がないと使えませんね。 クライアントごとのタイムゾーンをテーブルで管理するのもいやですよね。 <?php $d = new DateTime('2011-06-22 13:20', new DateTimeZone('UTC')); var_dump($d); $d->setTimeZone(new DateTimeZone('Asia/Tokyo')); var_dump($d); ?> object(DateTime)#1 (3) { ["date"]=> string(19) "2011-06-22 13:20:00" ["timezone_type"]=> int(3) ["timezone"]=> string(3) "UTC" } object(DateTime)#1 (3) { ["date"]=> string(19) "2011-06-22 22:20:00" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "Asia/Tokyo" }
- masa6272
- ベストアンサー率66% (93/140)
こんなんで、どうでしょう? <?php $d = new DateTime('2011-06-22 13:20', new DateTimeZone('UTC')); var_dump($d); $d->setTimeZone(new DateTimeZone('Asia/Tokyo')); var_dump($d); ?>
お礼
早速ありがとう御座います。 この内容では配列の中身は空でした。 DateTimeの第一引数(2011-06-22 13:20)のフォーマットに問題があるのでしょうか? また、3行目でnew DateTimeZone('Asia/Tokyo')と指定しておりますが、 この内容で、例えば国外からのアクセスがあってもその国にあった時間に変更されますでしょうか?