繁体   English   中英

在JavaScript中获取2个日期之间的差额

[英]Get difference between 2 dates in 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

 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

希望这可以帮助。

最简单的方法是使用moment.js库:

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()

丑陋的js方式:

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));

检查此解决方案,该解决方案使用名为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变量,您可以修改上面的代码或您选择在函数引用中选择的代码。

Google跟踪代码管理器中的自定义JavaScript变量

Google跟踪代码管理器中的自定义JavaScript变量

更改月份和日期顺序首先应该是月份,然后是日期... 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); 

日期由一年,一个月,一天,一个小时,一分钟,一秒和毫秒组成。

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

有四种初始化日期的方法:

new Date()new Date(毫秒)new Date(dateString)new Date(年,月,日,小时,分钟,秒,毫秒)

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

您的第二个约会不正确。 解析器正在考虑使用这种格式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); 

只需如下更改前两行

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

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); })() 

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); 

new Date("19.11.2016");

这是无效日期 因此,区别是NaN。

将格式更改为mm/dd/yyyy

您可以使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM