具体例)
・基準日 : Fri, 09 Jun 2006 18:00:00 +0100 (RFC 822:標準時ではありません +0100に注意)
・表示する日時 : 基準日をユーザーのローカル時間に変換して表示(日本の場合 [Sat, 10 Jun 2006 01:00:00]を表示させたい)
PHP4単体でもJavaScriptとの組み合わせでもかまいません。
サーバ上では何か決まった時刻形式で保存する
必要があります。
日本ご基準にして日本の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
サーバ上では何か決まった時刻形式で保存する
必要があります。
日本ご基準にして日本の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資料参照 助かります
サマータイムの扱いが問題ですね
ありがとうございました
一度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で統一してみます
ありがとうございました
rfc3339形式 PHP資料参照 助かります
サマータイムの扱いが問題ですね
ありがとうございました