2015-04-16 12 views
6

Tôi muốn đếm ngược những ngày cho đến khi một sự kiện cụ thể sử dụng momentj nhưng tôi nhận được kết quả không mong muốn.Tính toán ngày cho đến khi một ngày cụ thể với thời điểm

Với ngày hôm nay là ngày 17 tháng 4 và ngày diễn ra sự kiện là ngày 14 tháng 5, tôi muốn số ngày kết quả là 27, tuy nhiên mã của tôi cho tôi kết quả là 57. Có gì sai?

function daysRemaining() { 
    var eventdate = moment([2015, 5, 14]); 
    var todaysdate = moment(); 
    return eventdate.diff(todaysdate, 'days'); 
} 
alert(daysRemaining()); 
+1

Nếu bạn chạy 'console.log (eventdate.format()); ', nó trả về '" 2015-06-14T00: 00: 00-04: 00 "'. –

Trả lời

9

Khi tạo một đối tượng thời điểm sử dụng mảng, bạn phải lưu ý rằng tháng, giờ, phút, giây và mili giây đều được lập chỉ mục bằng 0. Năm và ngày trong tháng được lập chỉ mục 1. Điều này là để phản ánh các thông số Date gốc.

Reference

Vì vậy, một trong hai thay đổi tháng đến 4 tháng để phản ánh hoặc phân tích ngày như một ISO 8601 string

function daysRemaining() { 
    var eventdate = moment("2015-05-14"); 
    var todaysdate = moment(); 
    return eventdate.diff(todaysdate, 'days'); 
} 
alert(daysRemaining()); 
3

Đó là vì các tháng không được lập chỉ mục. Vì vậy, 5 thực sự là tháng 6;)

+0

Ok, đó không phải là câu trả lời tôi mong đợi! Còn ngày và năm thì sao? –

+1

[Tham khảo] (http://momentjs.com/docs/#/parsing/array/) - "Bởi vì điều này phản ánh các tham số Ngày gốc, tháng, giờ, phút, giây và mili giây là tất cả không được lập chỉ mục. Năm và ngày của tháng là 1 chỉ mục. " –

Các vấn đề liên quan