3

jQuery クレジット カードの有効期限の検証スクリプトに取り組んでいます。クレジットカードの有効期限は、有効期限月の末日です。たとえば、カードの有効期限が 2013 年 8 月の場合、2013 年 8 月 31 日まで有効です。

過去にサーバー側で、現在の月に 1 を加えてから 1 日を引いて、月の最終日を決定していました。

今日、新しい日付を作成するときに、JavaScript の Date() オブジェクトの 3 番目のパラメーターに 0 を適用すると、結果の日付が月末日になることに気付きました。しかし、この観察を裏付けるオンライン ドキュメントを見つけることができませんでした。

ここにいくつかのサンプルコードがあります。

var month = 10;
var year = 2013;
var expires = new Date(year, month, 0);
alert(expires);

そして、これが私が作成したjsFiddleの例です。

JavaScript では月は 0 から始まると思っていたので、これは少し紛らわしいです。Chrome、Firefox、IE、および Safari でこれをテストしましたが、動作は一貫しているようです。返される日付は、一貫して月の最終日を表示します。これは幸運な発見のように見えますが、ここで何が起こっているのかを理解したいと思っています。

月末の日付を割り当てるこのアプローチを実行しても安全ですか? もしそうなら、これを確認できるオンライン ドキュメントはありますか? ありがとう。

4

1 に答える 1

4

ゼロから始まります。これにより、前月の月末日が作成されます。月 10 は 11 月であるため、11 月の 0 日で日付を作成すると、10 月末 (月 9) になります。

つまり、11 月の 0 日は、10 月の最後の日である「11 月 1 日の前日」を意味します。11 月の -1 日目は 10 月 30 日です。

于 2013-07-31T17:47:43.997 に答える