Mengapa Javascript memperlakukan hari dan bulan secara berbeda?


42

Saya perhatikan bahwa di JavaScript, saat membuat Date, bulan berbasis nol, dan hari tidak.

Sebagai contoh:

var foo = new Date(2012, 1, 1)

menghasilkan 1 Februari 2012

Kenapa ini?


6
months = ['Jan', 'Feb',..., 'Nov', 'Dec']; month = months[date.getMonth()];
zzzzBov

Jawaban:


50

Kemungkinan besar idenya adalah, bahwa bulan dianggap sebagai indeks ke dalam array nama bulan, sementara hari hanya "dihitung".


21
Di mana ini masuk akal dari sudut pandang jawaban, itu gila untuk berpikir logika ini telah ada untuk berapa lama sekarang dan saya tidak pernah mempertanyakannya sebelumnya.
rlemon

2
@rlemon Fakta bahwa Anda belum pernah mempertanyakan logika itu sebelumnya hanya membuktikan bahwa itu masuk akal :)
dasblinkenlight

14
FWIW, saya tidak pernah berpikir itu masuk akal. Memproses tanggal dalam JavaScript selalu menjadi sesuatu yang membuat saya bergidik, karena saya biasanya melupakan hal-hal seperti ini sampai saya mulai men-debug hasil yang aneh.
FrustratedWithFormsDesigner

2
FWIW, saya bukan pengembang front-end dan tidak sering harus berurusan dengan tanggal dalam Javascript selain dari sesekalinew Date().getTime()
rlemon

20
Ketika datang ke Javascript, "ini sebabnya mereka melakukannya" dan "ini masuk akal" adalah dua hal yang jarang Anda dengar bersama.
Tridus

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.