人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

日付変換の質問です。ある日時をページを回覧したユーザーのローカルタイムにあわせて変換して表示したい場合の方法を教えてください。本体ページはPHP4です。

具体例)
・基準日 : Fri, 09 Jun 2006 18:00:00 +0100 (RFC 822:標準時ではありません +0100に注意)
・表示する日時 : 基準日をユーザーのローカル時間に変換して表示(日本の場合 [Sat, 10 Jun 2006 01:00:00]を表示させたい)

PHP4単体でもJavaScriptとの組み合わせでもかまいません。

●質問者: mestallajp
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:00 2006 JavaScript JUN RFC
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kurukuru-neko
●50ポイント ベストアンサー

サーバ上では何か決まった時刻形式で保存する

必要があります。

日本ご基準にして日本のJSTで保存するか、UTC

(GMT)で保存するのが一般的と思います。

ブラウザが動作しているPCのJavaScript

は、当然現地のローカル時間で標示したいので

あればUTC(GMT)で保存する事をお勧めします。

サマータイムはたまに変更されてしまい、

サーバで面倒をみるとそれをフォローする必要が

あります。

おまけにもうひとつの問題として、

まともなサマータイムに関しての資料が

少ないことです。

さらに言うとその人が利用するPCの

サマータイムを無効にしている場合なども

あるので(よく移動する人)その人にとって

ベストが何かはサーバで判断するのは困難です。

基本的に、PCの時刻はPCでしかわからないと

思った方がよいです。

又標示する場合、サマータイム(夏時間、冬時間)切替

日に限り、前後がわかるような表示をしてあげると

親切です。 なぜなら時間が戻る場合が(夏→冬)

場合があるからです。

方法:

サーバPHP4で扱う時刻は、UTC/GMTのいずれか

rfc3339形式 PHP資料参照

gmdateを使う

クライアントの時刻は、JavaScriptで変換して

標示してあげる。

Date()オブジェクトで変換

JavaScript資料

http://www.scollabo.com/banban/java/ref_15.html

http://www.asagaotv.ne.jp/~kawasaki/js/jscriptd.html

PHP資料

http://www.interq.or.jp/student/exeal/dss/ref/jscript/object/dat...

http://www.pahoo.org/e-soul/webtech/php02/php02-08-01.shtm

http://f32.aaa.livedoor.jp/~azusa/index.php?p=14&t=php

http://nyx.pu1.net/practice/date_p/date_p3.php

http://www.linux.or.jp/JM/html/LDP_man-pages/man2/time.2.html

◎質問者からの返答

rfc3339形式 PHP資料参照 助かります

サマータイムの扱いが問題ですね

ありがとうございました


2 ● kazu1107
●35ポイント

一度UNIXタイムに変換してから時差計算(足し引き)すれば良いのではないでしょうか?

ただ、+100の意味は+1時間でしたっけ?いまいちわからないのでそこはご了承ください;;


いろいろな場所の時間を計算するとプラスマイナスの計算が面倒なので、一度UTC時刻を求めるほうが良いかもしれません。

$base = mktime(18, 0, 0, 6, 9, 2006) + 60 * 60;

$jptime = $base - $timezone*60;


$timezoneは前回の仕様に従っていれば-540のはずです。60や-540は分数なので、60をかけて秒数にしています。

最終的に求まる$jptimeはUNIXタイムなので「date("Y-m-d",$jptime)」で書式化できると思います。

◎質問者からの返答

UTCで統一してみます

ありがとうございました

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ