2014-08-28 235 views
0

我發現了一個類似的問題here但這不適用於我的情況,因爲我的日期格式爲「yyyy-MM-dd」,即「2014-08-29」和「2014-08-31」。
我在下面嘗試,但沒有按預期工作。 「dtpEffectiveFrom」 & 「dtpEffectiveTo」均爲HTML5 日期字段。對於上述日期範圍,輸出顯示的是NaN天而不是3天。如何在javascript中查找特定日期格式的日期差異?

var effectiveFrom = $("#dtpEffectiveFrom").val(); 
var effectiveTo = $("#dtpEffectiveTo").val(); 

function daydiff(first, second) { 
    return (second - first)/(1000 * 60 * 60 * 24); 
} 

var msg = "Are you applying for a " + daydiff(effectiveFrom, effectiveTo) + " day(s) leave?"; 
alert(msg); 

回答

2

看到這段代碼。您需要將字符串轉換爲日期,並使用getTime函數以毫秒爲單位獲取日期。

var effectiveFrom = "2014-08-29"; 
var effectiveTo = "2014-09-31"; 

function daydiff(first, second) { 
    return (second.getTime() - first.getTime())/(1000 * 60 * 60 * 24) + 1; 
} 

var days = daydiff(new Date(effectiveFrom), new Date(effectiveTo)); 

console.log(days); 
+0

我想你的代碼,但這是顯示差異的2天,但我需要的結果包括從日期,因爲我期待的結果顯示3天爲輸出。你能做點什麼嗎?謝謝。 – 2014-08-28 05:38:00

+0

如果你想從日期包括,然後加1到結果爲31 - 29將永遠是2.請參閱修改後的代碼 – 2014-08-28 05:55:20

1

嘗試使用daydiff功能是這樣的:

function daydiff(first, second) { 
    first=new Date(first); 
    second=new Date(second); 
    return (second - first)/(1000 * 60 * 60 * 24); 
} 
0

使用日期對象來處理的格式...

var effectiveFrom = new Date($("#dtpEffectiveFrom").val()); 
    var effectiveTo = new Date($("#dtpEffectiveTo").val()); 

    function daydiff(first, second) { 
     return (second - first)/(1000 * 60 * 60 * 24); 
    } 

    var msg = "Are you applying for a " + daydiff(effectiveFrom, effectiveTo) + " day(s) leave?"; 
    alert(msg); 

http://jsfiddle.net/crt2a6xz/