revTalk CGI 09: 時間表示
表示サンプル


時間のバグ
「ON-REV ENGINE NOTES」http://samples.on-rev.com/irev-engine-notes.txtのサインプルにある

------- BEGIN FILE date.irev
<html>
<body>
<p><?rev put "Hello World, the time is" && the time ?></p>
</body>
</html>

------- END FILE date.irev の 「the time」 は、夏時間のある国では正しく表示されません。

デスクトップ版(エンタプライズ等)では、「the time」は使っているコンピューターの
夏冬のローカルタイムを正しく表示しますが、例えば
東京では「9:00 PM」冬時間のニューヨークでは「7:00AM」
東京では「9:00 PM」夏時間のニューヨークでは「8:00AM」が、正しく表示されます。

On-Rev で使った場合、クライアントのブラウザーには
東京では「9:00 PM」冬時間のニューヨークでは「7:00AM」(まだ確認していないので予測です)
東京では「9:00 PM」夏時間のニューヨークでは「7:00AM」が表示されます。

つまりブラウザーを見ている人のローカルタイムが夏時間の場合、1時間の誤差が現れてきます。

これと同じに、 Revolution(デスクトップ) の the internet date で返される 最後の値(グリニッチ標準時からの時差。厳密にはUTC との時差となっている)も
東京が「Fri, 10 Jul 2009 21:00:00 +0900」の場合(9時間のプラス時差)
夏時間のニューヨークでは、デスクトップでは
Fri, 10 Jul 2009 08:00:00 -0400
夏時間のニューヨークでは、ブラウザーには
Fri, 10 Jul 2009 07:19:35 -0500 となって、最後の値に1時間の誤差がでます。

ちょっと面倒で分かりづらいですね。

とにかく夏時間の時間帯では間違って表示されるということです。
(冬時間ではまだ実際に試してないんですけれど)
インターネットは、いつも丸い地球を念頭に置いての表示させなくてはいけないので、
取りあえず、この修正方法ですが

shell を使ってUNIX の「date」のタイムゾーンを設定して、正しく表示できます。

例えば 東京(日本と言った方がいいでしょうか?)とニューヨーク(東海岸時間)

<?rev
put "Asia/Tokyo" into $TZ
put shell("date") into tJPTime
put "US/Eastern" into $TZ
put shell("date") into tNYTime
put "Asia/Tokyo: " & tJPTime &"<br>"& "US/Eastern: " & tNYTime
?>

これで「Asia/Tokyo: Fri Jul 10 21:00:00 JST 2009 」「US/Eastern = Fri Jul 10 08:00:00 EDT 2009 」
夏冬ともに正しい the internet date が ON-REV でも取得できます。

$TZ に入れるタイムゾーンは http://www.chronos-st.org/Windows-to-Olson.html こちらで、見れます。