1. ホーム
  2. javascript

なぜjavascriptのgetMonthは0からカウントし、getDateは1からカウントするのですか?

2023-08-13 11:34:05

質問

この質問は、純粋に私の好奇心を満たすためのものです。

JavaScriptのDateオブジェクトで、あなたが呼ぶとき getMonth() を呼び出すと、月が返されますが、0から数えます。

0 = January
1 = February 
...

しかし getDate() を呼び出すと、1 からカウントを開始します。

1 = 1
2 = 2
... 

なぜ矛盾しているのか?

どのように解決するのですか?

名前の配列で参照するのが簡単だからだと思いますが、つまりは

var months = ["January", "February", "March", "April", "May", "June", "July",
         "August", "September", "October", "November", "December"];

var d = new Date();

var namedMonth = months[d.getMonth()];

もし getMonth() が返された場合 1-12 を返した場合、プログラマは d.getMonth()-1 を実行しなければならなくなります。

月の日はそれ自体、特定のquot;names"を持っていません。その getDate()1-(28-31) . 通常は番号で参照するのみです。

と同じ概念で getMonth() が適用されます。 getDay() も同様で、これは 0-6 を返します。

var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];

var namedDay = days[d.getDay()];

これだけだと、次のようなものが返ってきます。

console.log("Month: month[" + d.getMonth() + "]: " + namedMonth); 
//Month: month[3]:  April
console.log("Day: days[" + d.getDay() + "]: " + namedDay); 
// Day: days[4] : Thursday