11

「「エネルギー危機」の年に、議会は夏時間のより早い開始日を制定しました。1974年に夏時間は1月6日に始まり、1975年に2月23日に始まりました。この2年後、開始日は最後の日曜日に戻りました。 4月。" ( http://aa.usno.navy.mil/faq/docs/daylight_time.php
経由)

これらの日付のJavascript日付オブジェクトにバグがあるようです。127627200000ミリ秒を日付に変換する場合、それはThu Jan 17 00:00:00 EDT 1974になります。これはhttp://www.fileformat.info/tip/java/date2millis.htmでは正しいですが、 http:では正しくありませ ん。 //www.esqsoft.com/javascript_examples/date-to-epoch.htmは、1974年1月16日水曜日23:00:00 GMT-0500(東部標準時)に変換されることを示しています。javascriptで新しいDate(127627200000)オブジェクトを作成すると、後者の日付変換が行われます。これはすべての主要なブラウザで発生します。

これが誰にとっても問題となったのはこれが初めてだとは想像できませんが、オンラインで数回検索しても、この問題の他のケースを見つけることはできません。これに対する既存の修正があるかどうか、またはJavascriptの変換が間違っている日付を手動で確認するよりも簡単な修正があるかどうか誰かが知っていますか?これが問題となる他の日付はありますか?

4

2 に答える 2

13

いつものように、仕様を確認するのが最善です:)

この場合、ECMA-262のセクション 15.9.1.9 でこれを見て、かなりショックを受けました。

ECMAScript の実装では、正確な時刻が夏時間の対象であったかどうかを判断しようとするのではなく、現在の夏時間アルゴリズムがその時点で使用されていた場合に夏時間が有効になっていたかどうかだけを判断する必要があります。これにより、ロケールが年間を通じて夏時間を観察した年を考慮に入れるなどの複雑さが回避されます。

言い換えれば、準拠した ECMAScript 実装は、歴史的に正確であることは許可されていません。

すべての実装がこれに従っているかどうかはわかりません...しかし、歴史的に正確なタイムゾーンを取得したい場合は、ある種の別のライブラリが必要になることを示唆しています...「歴史的に正確」ではない場合もちろん、ほぼ 1974 年までさかのぼる必要があります。米国は 2007 年に DST スケジュールを変更し、他の国はそれよりも最近 (そして警告も少なく) 変更しました。


1 15.9.1.9 の最初の出現。何らかの理由で、「夏時間調整」と「現地時間」の 2 回発生します。わお。

于 2010-01-19T19:57:24.197 に答える
0

Java は過去のタイム ゾーン (約 1920 年までさかのぼる) を使用しますが、JavaScript は明らかにそうではありません。

于 2010-01-19T19:47:33.380 に答える