当前位置: 首页 > 知识库问答 >
问题:

如何在javascript两个日期之间的差异,当他们是不同的月份

姬俊驰
2023-03-14

我想知道不同月份或年份的两个日期之间的差异。我使用了下面的代码

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。也就是说,当月份或年份不同时,结果会出现异常。请给我一些想法或一些函数,我可以使用它们来获得适当的结果。

共有2个答案

琴俊良
2023-03-14

这里有一个函数可以做到这一点。我用不同的年份和月份进行了测试。因为时间信息对你来说不相关,所以通过为两个日期赋予相同的值来消除它,比如你在评论中提到的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");

下面是两张获得结果的图像截图。第一个是不同的年份,第二个是不同的月份。

墨星鹏
2023-03-14

在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天,所以我应该去十一月 问题答案: 试试这个 或者

  • 问题内容: 如何以格式计算两个日期之间的差并以秒或毫秒为单位获取结果? 问题答案: 因此,您可以为您的目的使用。