在javascript中获取2个日期之间的差异

时间:2016-11-03 13:31:49

标签: javascript



var date1 = new Date("04.11.2016");
var date2 = new Date("19.11.2016");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
alert(diffDays);




尝试在这些日期之间取得不同,但我的日期格式为" 04.11.2016",结果显示NaN

11 个答案:

答案 0 :(得分:3)

var date1 = new Date("11/04/2016");
var date2 = new Date("11/19/2016");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
alert(diffDays);

更改日期格式。

它应该是 MM / DD / YYYY

希望这有帮助。

答案 1 :(得分:1)

最简单的方法是使用var date1 = moment('04.11.2016', 'MM.DD.YYYY'), date2 = moment('19.11.2016', 'MM.DD.YYYY'), diffDays = date2.diff(date1, 'days'); // you can wrap it in Math.abs() 库:

var input1 = '04.11.2016',
    parts1 = input1.split('.'),
    date1 = new Date(parts1[2], parts1[1], parts1[0]),
    input2 = '19.11.2016',
    parts2 = input2.split('.'),
    date2 = new Date(parts2[2], parts2[1], parts2[0]),
    timeDiff = Math.abs(date2.getTime() - date1.getTime()),
    diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));

丑陋的js方式:

{{1}}

答案 2 :(得分:0)

检查此解决方案,该解决方案使用名为getDate的函数将格式"04.11.2016"的日期字符串转换为JavaScript Date对象。

function getDate(dateStr) {
  var arr = dateStr.split('.');

  return new Date(arr[2], arr[1], arr[0]);
}

var start = getDate("04.11.2016");
var end = getDate("19.11.2016");
var timeDiff = Math.abs(end.getTime() - start.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 60 * 60 * 24))
console.log('Number of days: ' + diffDays);

要使用此代码在Google跟踪代码管理器中创建自定义JavaScript变量,您可以修改上述代码或您选择的代码 - reference

Custom JavaScript Variable in Google Tag Manager

Custom JavaScript Variable in Google Tag Manager

答案 3 :(得分:0)

更改月份和日期顺序首先应该是月份然后是日期... MM / DD / YYYY



var date1 = new Date("11.04.2016");
var date2 = new Date("11.19.2016");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
alert(diffDays);




答案 4 :(得分:0)

日期包括年,月,日,小时,分钟,秒和毫秒。

使用新的Date()构造函数创建日期对象。

有4种方法可以启动日期:

新日期() 新日期(毫秒) 新日期(dateString) 新日期(年,月,日,小时,分钟,秒,毫秒)

所以你可以拆分然后再使用它

答案 5 :(得分:0)

您的第二个日期不正确。 Parser正在考虑这种格式MM.DD.YYY,并且你已提供超出范围的月份。



var date1 = new Date("04.11.2016");
var date2 = new Date("09.11.2016");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
alert(diffDays);




答案 6 :(得分:0)

只需更改前两行

即可
var date1 = new Date(2016,11,4);
var date2 = new Date(2016,11,19);

答案 7 :(得分:0)

new date("mm dd yyyy")格式错误

(function () {
var date1 = new Date("11 04 2016");
var date2 = new Date("11 19 2016");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
console.log(diffDays);
})()

答案 8 :(得分:0)

JS希望日期在MM-DD-YYYY而不是DD-MM-YYYY。理想的方法是使用moment.js,但你可以使用这样的东西:

function createCustomDate(dateString){
  var dateArr = dateString.split(/[^0-9]/).reverse().join("-")
  return new Date(dateArr);
}

var dateStr1 = "04.11.2016";
var dateStr2 = "19.11.2016";
var date1 = createCustomDate(dateStr1);
var date2 = createCustomDate(dateStr2);
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
console.log(diffDays);

答案 9 :(得分:0)

new Date("19.11.2016");

这是无效日期。所以,区别在于NaN。

将格式更改为mm/dd/yyyy,它会起作用。

答案 10 :(得分:0)

您可以使用moment.js

d = moment('11.16.2016') // here date format was in "MM.DD.YYYY"
e = moment('11.04.2016') // here date format was in "MM.DD.YYYY"
getDiffbydays = e.diff(d,'days') // get diff by days you can use day
getDiffbyyears = e.diff(d,'year') // get diff by years you can use year 
getDiffbymonth = e.diff(d,'month') // get diff by months you can use month