2014-08-28 283 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/