2013-05-10 37 views
8

tôi đã cố gắng này, nhưng nó khôngLàm thế nào để có được bao nhiêu ngày cho đến sinh nhật tiếp theo của tôi?

var diffDays1=(function(){ 
var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds 
var secondDate = new Date(new Date().getFullYear()+1,4,5); 
var firstDate = new Date(); 
return Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay))); 
})(); 

Wolfram Alpha cho biết đó là 330 ngày, diffDays1 cho thấy đó là 359. Đây có lẽ là do tiết kiệm ánh sáng ban ngày hoặc một cái gì đó. Có cách nào để tính toán chính xác các ngày kể từ khi không thực hiện phía máy chủ.

+0

Hàm này không luôn trả về số ngày cho đến ngày sinh nhật tiếp theo của bạn. Nó trả về số ngày cho đến khi sinh nhật của bạn vào năm tới đôi khi sẽ là sinh nhật tiếp theo của bạn. – Robert

Trả lời

14

Vấn đề là bạn đang căn cứ vào tháng 4 là 4, khi tháng 4 là 3 trong Javascript. Xem https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date#Parameters

var diffDays1=(function(){ 
    var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds 
    var secondDate = new Date(new Date().getFullYear()+1,3,5); 
    var firstDate = new Date(); 
    return Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay))); 
})(); 
+0

1 đại diện ở đây là gì? – Lucas

4

Tại sao lại phát minh bánh xe? Sử dụng datejs

và sau:

var startd = Date.parseExact(ind, "yyyy-MM-dd"); 
var endd = Date.parseExact(end, "yyyy-MM-dd"); 
var diff = new Date(endd - startd); 
var days = diff/1000/60/60/24; 

Đó là tất cả các folks!

2

Thư viện moment.js (http://momentjs.com) xử lý vấn đề này và rất nhiều vấn đề về ngày tháng JavaScript khác rất dễ dàng và độc đáo. Chức năng diff (http://momentjs.com/docs/#/displaying/difference/) sẽ thực hiện chính xác những gì bạn muốn.

Chức năng fromNow cũng là siêu đẹp nếu muốn hiển thị số ngày từ bây giờ bạn có thể làm điều gì đó như:

moment([2014, 4, 5]).fromNow(); 

sẽ tạo ra một cái gì đó như "330 ngày" nếu nó 330 ngày nữa.

http://momentjs.com/docs/#/displaying/fromnow/

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