我想找到两个日期之间的区别。使用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){}
答案 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了解更多详情。