Tại sao Javascript đối xử với ngày và tháng khác nhau?


42

Tôi đã nhận thấy rằng trong JavaScript, khi tạo Date, một tháng là không dựa trên và ngày thì không.

Ví dụ:

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

sản xuất ngày 1 tháng 2 năm 2012

Tại sao lại thế này?


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

Câu trả lời:


50

Nhiều khả năng ý tưởng là, các tháng được coi là một chỉ mục thành một mảng các tên tháng, trong khi ngày chỉ đơn giản là "được tính".


21
Trường hợp điều này có ý nghĩa từ quan điểm trả lời, thật điên rồ khi nghĩ rằng logic này đã tồn tại được bao lâu và tôi chưa bao giờ đặt câu hỏi về nó trước đây.
rlemon

2
@rlemon Thực tế là bạn chưa bao giờ đặt câu hỏi về logic đó trước đây chỉ chứng minh rằng nó có ý nghĩa :)
dasblinkenlight

14
FWIW, tôi không bao giờ nghĩ rằng nó có ý nghĩa nhiều. Xử lý ngày trong JavaScript luôn là điều khiến tôi rùng mình, bởi vì tôi thường quên những thứ như thế này cho đến khi tôi bắt đầu gỡ lỗi kết quả lạ.
Thất vọngWithFormsDesigner

2
FWIW, tôi không phải là nhà phát triển giao diện người dùng và thường không phải đối phó với các ngày trong Javascript ngoài thỉnh thoảngnew Date().getTime()
rlemon

20
Khi nói đến Javascript, "đây là lý do tại sao họ đã làm điều đó" và "điều này có ý nghĩa tốt" là hai điều bạn hiếm khi nghe thấy cùng nhau.
Tridus

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.