1

私のプロジェクトでdate.jsを使用していますが、正確に正午または真夜中の時間コンポーネントを持つ日付に関して、予期していなかったことに遭遇しています。

ネイティブの JavaScriptDate.parseメソッドを使用すると、日付を解析するときに期待した結果が得られます。

// plain old javascript
var date = new Date(Date.parse("10/21/2010 12:00:00 PM"));
alert(date);

私はこれを得る:

2010 年 10 月 21 日木曜日 12:00:00 GMT-0500 (中央夏時間)

私はこれを 2010 年 10 月 21 日の正午と解釈します。これが私の入力日付だと思います。しかし、date.jsをインポートして似たようなことをしようとすると、

// using date.js
var date = Date.parseExact("10/21/2010 12:00:00 PM", "M/d/yyyy hh:mm:ss tt");
alert(date);

私はこれを得る:

2010 年 10 月 22 日金曜日 00:00:00 GMT-0500 (中央夏時間)

これは翌日の真夜中のように見えます。なぜこれを真夜中と解釈するのか、あるいはなぜこれDate.parseを javascript のデフォルトとは異なる解釈にするのか、私にはわかりません。12:00 PM の意味について混乱していますか? date.js の parseExact を誤用していませんか?

4

2 に答える 2

1

これはかなり古い質問ですが、検索でこれに出くわす可能性がある人には、現在維持されているバージョンの Date.js ( https://github.com/abritinthebay/datejs/ )に切り替えることを強くお勧めします。予期しない動作が発生しています。

元の開発者がプロ​​ジェクトを放棄したように見えるため、Google コード ベースと datejs.com のバージョンの両方に未修正のバグがあり、対処される可能性はほとんどありません。

于 2014-06-19T17:36:58.847 に答える
1

バージョンの問題のようです:

http://jsfiddle.net/4QK8Q/
http://jsfiddle.net/JKg3n/

1 つ目はあなたのファイル (Google コード ベースから) で、2 つ目は Web サイト (datejs.com) からのものです。おかしなことに、それらは同じバージョンのように見えますが、明らかに違います。私は何が起こっているのかを伝えるほどライブラリに精通していませんが、バグ レポートを提出することをお勧めします。

于 2011-09-15T22:00:56.370 に答える