2011-10-20 10 views
0

可能性の重複:
Zero-based month numberingなぜ、日付オブジェクトに変換するときに、JavaScriptの月から1を引くのですか?

私が読んでいる本の中で説明がまあ、私の叔母は皆のように1から彼女ヶ月のカウントを開始するので、我々は1を引く」と言います。ここで

は、入力された文字列の日付です:"died 27/04/2006: Black Leclère"

は、ここでは、コードです:

function extractDate(paragraph) { 
    function numberAt(start, length) { 
    return Number(paragraph.slice(start, start + length)); 
    } 
    return new Date(numberAt(11, 4), numberAt(8, 2) - 1, 
        numberAt(5, 2)); 
} 

alert(extractDate("died 27-04-2006: Black Leclère")); 

04 - 1は03です。ただし、ここで出力日オブジェクトはThu Apr 27 2006 00:00:00です。

出力に必要なものがわかっていても、言語の異常な動作とそれに続く-1の必要性については説明されていません。説明してください。

+2

叔母は1人をカウントしますが、JavaScriptの叔父さんは0人からカウントします。https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Date – Yoshi

+0

@Yoshiなぜ月を数えると0から始まるのですか?年を数えると1から始まる? –

+2

@Fohsap:それだけです。 –

答えて

4

JavaScriptで示されるヶ月Dateオブジェクトは、0から作成されます。つまり、この行動がZero-based month numberingを参照して、多くの言語間で実装されている理由として、いくつかの興味深い回答について

など、1月は0として表され、2として月1として2月です。

「ゼロベースのアレイと1ベースの月の値の組み合わせが問題を持って行います。月9の月名を取得するには、月の配列から項目8を取得する必要があります。一部の開発者です誰かが数字ではなく名前を知りたいので、その月をゼロベースのものに変更することを望んでいました。それは個人的な見解です」私が年と日が列挙されていないのに対し、月はそれが月名の配列にマッピングすることができることを意味し、列挙されたフィールドであり、配列はゼロから数えるので、それがない技術的な理由は、これが可能だと思う

1

;あなたはいつも実際の数値の値を求めているので、それは保存されている値です。

数字で月を使用している場合、少し奇妙に思えるかもしれません(忘れるのは簡単ではありません)ので、これは完全に有効な質問です。

ところで、日付を使って作業する場合、特に文字列から日付を抽出して文字列に書式設定する場合は、このような種類のもので多く役立つjavascriptライブラリのDate.jsを調べるとよいでしょう。もの。

関連する問題