javascript - 如何在不同月份的javascript中获取两个日期之间的差异

标签 javascript date datetime

当两个日期处于不同的月份或年份时,我想得到它们之间的差异。我使用了下面的代码

var d1= lastexecdate.split(".");

var d2= jabusinessdate.split(".");

var date1= new Date(d1[2], d1[1],d1[0]);

var date2= new Date(d2[2], d2[1],d2[0]);

var timeDiff= (date2.getTime() - date1.getTime());

var diffdays= Math.ceil(timeDiff/(1000*3600*24));

当我使用诸如 17.10.2014 和 19.10.2014 之类的日期时,它给了我两个完美的差异。但是当我使用诸如 2014 年 10 月 31 日和 2014 年 11 月 11 日之类的日期时,它给我的结果为零,而实际结果应该是 1。也就是说,当月份或年份不同时,它会显示结果异常。请给我一些想法或一些功能,我可以用它们来获得合适的结果。

最佳答案

在 JavaScript 中,月份从 0 开始索引。因此,一月的索引为 0,十二月的索引为 11。在您指定日期 2014 年 10 月 31 日的情况下,您实际上必须将 9 作为月份参数传递给日期构造函数。与日期构造函数类似,10 而不是 11。

例子:

对于“2014 年 10 月 31 日”:

var date1 = new Date(2014,9,31);

对于“1.11.2014”:

var date2 = new Date(2014,10,1);

现在您按如下方式进行计算:

var timeDiff =Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 

这将给出结果 1。

所以您所要做的就是从代码中的月份中减去 1,如下所示:

var date1= new Date(d1[2], d1[1] - 1,d1[0]);

var date2= new Date(d2[2], d2[1] - 1,d2[0]);

关于javascript - 如何在不同月份的javascript中获取两个日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29314331/

相关文章:

sql-server - SQL Server 函数返回最小日期(1753 年 1 月 1 日)

javascript - 防止文件生成新版本 - Webpack

javascript - 在条形图中呈现数据 AngularJS,如何制作一个好的多条形图?

c# - 一年内的两个日期

date - 日期格式 dd-MMM-yyyy 是否有标准名称?例如 2013 年 10 月 1 日

swift - "EEE, dd MMM yyyy hh:mm:ss zzz"字符串转换为日期

python - 将 Python ISO 日期时间转换为 Epoch

javascript - Asp mvc 和 Ajax 中的自动完成

javascript - Mozilla WebExtension 桌面通知显示时间和/或需要用户交互

PHP 日期和时间函数不会存储在数据库中