使用javascript查找两个日期之间的差异

时间:2014-12-10 11:43:53

标签: javascript jquery date datejs

我想找到两个日期之间的区别。使用jquery获取日期,我也使用datejs。当使用datejs时,它会选择我的日期,因为美国认为它是MM / DD / YYYY而不是dd-mm-yyyy。我差异的结果是NaN。我该如何解决这个问题。我是在里程还是近在咫尺?

var msMinute = 60*1000, 
    msDay = 60*60*24*1000;

start = $('#reconcile_start_date').val();   // 10-12-2014 | dd-mm-yyyy
end = $('#reconcile_end_date').val();           // 15-12-2014 | dd-mm-yyyy

start = new Date(start);
end   = new Date(end);

console.log(Math.floor((end - start) / msDay) + ' full days between ' + end + ' and ' + start);
difference = Math.floor((end - start) / msDay);

if(difference > 30){}

3 个答案:

答案 0 :(得分:1)

试试这个:

$(document).ready(function(){

    var msMinute = 60*1000; 
    var msDay = 60*60*24*1000;

    var start = '10-12-2014'; // October 12
    var statarr=start.split('-');

    var end = '12-15-2014'; // December 15
    var endarr=end.split('-');

    var dstart = new Date(statarr[0]+'/'+statarr[1]+'/'+statarr[2]).getTime();
    var dend   = new Date(endarr[0]+'/'+endarr[1]+'/'+endarr[2]).getTime();

    var diff = parseInt(dend-dstart);

    console.log(Math.floor(diff / msDay) + ' full days between ' + end + ' and ' + start);
    difference = Math.floor((end - start) / msDay);

    if(difference > 30){
    }
    });

//对于英国合成者来说:

var start = '12-10-2014'; // October 12
    var statarr=start.split('-');

    var end = '15-12-2014'; // December 15
    var endarr=end.split('-');

    var dstart = new Date(statarr[1]+'/'+statarr[0]+'/'+statarr[2]).getTime();
    var dend   = new Date(endarr[1]+'/'+endarr[0]+'/'+endarr[2]).getTime();

和休息是一样的。

答案 1 :(得分:0)

问题在于解析日期,默认情况下JS不会以格式解析日期。

有关如何从英国格式转换日期格式的更多示例(Why does Date.parse give incorrect results?

dateString参数,格式和浏览器行为的更多信息 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

请参阅此示例。 http://jsbin.com/fayerihipu/2/

$(document).ready(function(){

var msMinute = 60*1000, 
var msDay = 60*60*24*1000;

var start = '10-12-2014'; // October 12
var end = '12-15-2014'; // December 15

var dstart = new Date(start).getTime();
var dend   = new Date(end).getTime();

var diff = parseInt(dend-dstart);

console.log(Math.floor(diff / msDay) + ' full days between ' + end + ' and ' + start);
difference = Math.floor((end - start) / msDay);

if(difference > 30){
}
});

答案 2 :(得分:0)

据官方统计,JavaScript支持的唯一日期格式是ISO-8601的简化版:yyyy-mm-dd,几乎所有浏览器也支持yyyy/mm/dd

所以你需要做这样的事情来解析你的日期:

var parts = start.split('-');
start = new Date(parseInt(parts[2], 10),
              parseInt(parts[1], 10) - 1,
              parseInt(parts[0], 10));
//Date uses zero-based month numbers, and so we have to subtract one from the month number

查看here了解更多详情。