我想知道不同月份或年份的两个日期之间的差异。我使用了下面的代码
var d1=最后执行日期。拆分(“.”);
var d2=jabusinessdate.split (".");
var date1=新日期(d1[2],d1[1],d1[0]);
var date2=新日期(d2[2],d2[1],d2[0]);
VAR timeDiff=(date2.getTime()-date1.getTime());
var diffdays=数学。ceil(时间差/(1000*3600*24));
当我使用2014年10月17日和2014年10月19日这两个日期时,我会得到一个完美的差分。但当我使用2014年10月31日和2014年11月1日等日期时,结果为零,而实际结果应为1。也就是说,当月份或年份不同时,结果会出现异常。请给我一些想法或一些函数,我可以使用它们来获得适当的结果。
这里有一个函数可以做到这一点。我用不同的年份和月份进行了测试。因为时间信息对你来说不相关,所以通过为两个日期赋予相同的值来消除它,比如你在评论中提到的00:00:00
function dateDiff(date1, date2){
var diff = {} // return initialisation
var tmp = date2 - date1;
tmp = Math.floor(tmp/1000); // Number of seconds between the two dates
diff.sec = tmp % 60; // Extracting the number of seconds
tmp = Math.floor((tmp-diff.sec)/60); // Number of minutes (integer part)
diff.min = tmp % 60; // Extracting the number of minutes
tmp = Math.floor((tmp-diff.min)/60); // Number of hours (integer part)
diff.hour = tmp % 24; // Extracting the number of hours
tmp = Math.floor((tmp-diff.hour)/24); // Number of remaining days
diff.day = tmp;
return diff;
}
date1 = new Date('2013-08-25 00:00:00');
date2 = new Date('2013-10-29 22:16:57');
diff = dateDiff(date1, date2);
alert("Between "+date1.toString()+" and "+date2.toString()+" there are "+diff.day+" days, "+diff.hour+" hours, "+diff.min+" minutes and "+diff.sec+" seconds");
下面是两张获得结果的图像截图。第一个是不同的年份,第二个是不同的月份。
在JavaScript中,月份的索引从0开始。所以一月的索引为0,十二月的索引为11。在您指定日期31.10.2014的情况下,实际上必须将9作为月份参数传递给日期构造函数。同样,10而不是11传递给日期构造函数。
例:
对于“2014年10月31日”:
var date1 = new Date(2014,9,31);
2014年11月1日:
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中两个Date()对象的差异,而只返回差异中的月数? 任何帮助将是巨大的:) 问题答案: “差异中的月数”的定义要经过很多解释。:-) 您可以从JavaScript日期对象获取年,月和日。根据您要查找的信息,可以使用这些信息来计算两个时间点之间有多少个月。 例如,现成的,它找出两个日期之间有多少 整月 ,而不计算部分月份(例如,不包括每个日期所在的月份):
我已经搜索了4个小时了,但是还没有找到一个用JavaScript计算两个日期(年、月和天)之间差异的解决方案,比如:2010年4月10日是3年、x月和y天之前。 有很多解决方案,但它们只提供了日、月或年的格式差异,或者它们不正确(意味着没有考虑一个月或闰年的实际天数,等等)。做那件事真的有那么难吗? 我看了一下: http://momentjs.com/->只能输出年、月或天的差异 http://
嗯,我在这里发现了很多这样的问题,试图获得年、月和日的两个日期之间的差异。。。但没有满足我要求的答案。 所以我写了一些计算的东西,它似乎是有效的,但也许这里的一些专家可以进行更正,或者帮助使这更简单。
问题内容: 我有以下代码可以成功获取两天之间的差异(以天,小时,分钟,秒为单位): 但是,当日期跨入另一个月份时,这将不起作用,例如: 是否可以智能地跨越几个月并获得准确的时差?我对Joda熟悉,但是我想坚持使用标准Java API,除非没有Joda这样的东西是不可能的。 问题答案: 您正在使用 应该 您会得到正确的结果 这是日期模式的javadoc。是每月的一天。是一年中的一天。您的对象只是没有
问题内容: 请参考以下示例,并请告诉我您的想法。 输出= 预期输出= 由于我在十一月只有15天,所以我应该去十一月 问题答案: 试试这个 或者
问题内容: 如何以格式计算两个日期之间的差并以秒或毫秒为单位获取结果? 问题答案: 因此,您可以为您的目的使用。