Javascript 日期从四个日期开始

Javascript 日期从四个日期开始,javascript,datediff,Javascript,Datediff,我试图从两个不同的时间段计算某个人的服务时间。 我一直在使用DateDiff脚本,它可以在两个日期之间显示(如下所示): 变量DateDiff={ inDays:功能(d1、d2){ var t2=d2.getTime(); var t1=d1.getTime(); 返回parseInt((t2-t1)/(24*3600*1000)); }, 周内:功能(d1、d2){ var t2=d2.getTime(); var t1=d1.getTime(); 返回parseInt((t2-t1)/(

我试图从两个不同的时间段计算某个人的服务时间。 我一直在使用DateDiff脚本,它可以在两个日期之间显示(如下所示):


变量DateDiff={
inDays:功能(d1、d2){
var t2=d2.getTime();
var t1=d1.getTime();
返回parseInt((t2-t1)/(24*3600*1000));
},
周内:功能(d1、d2){
var t2=d2.getTime();
var t1=d1.getTime();
返回parseInt((t2-t1)/(24*3600*1000*7));
},
月份:功能(d1、d2){
变量d1Y=d1.getFullYear();
var d2Y=d2.getFullYear();
var d1M=d1.getMonth();
var d2M=d2.getMonth();
返回(d2M+12*d2Y)-(d1M+12*d1Y);
},
年份:功能(d1、d2){
返回d2.getFullYear()-d1.getFullYear();
}
}
var dString=“2016年5月23日”;
var d1=新日期(dString);
var d2=新日期();
文件。书写(“服务:-”+日期差,以年为单位(d1,d2));
文件。填写(“年”);
但我想添加上一个时期的服务时间,然后将其合并在一起,显示总的年数和月数。 我试过用我自己的方式把剧本“翻倍”,但现在我的头开始撞到桌子上。当月数超过12个月时,我似乎不知道如何增加年数。 这就是我要做的:

<center>
<font face=glegoo size=4 color=#909090>
<script type="text/javascript">
var DateDiff = {

    inDays: function(d1, d2, d3, d4) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();
        var t4 = d4.getTime();
        var t3 = d3.getTime();

        return parseInt((t2-t1)/(24*3600*1000)+(t4-t3)/(24*3600*1000));
    },

    inWeeks: function(d1, d2, d3, d4) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();
        var t4 = d4.getTime();
        var t3 = d3.getTime();

        return parseInt((t2-t1)/(24*3600*1000*7)+(t4-t3)/(24*3600*1000*7));
    },

    inMonths: function(d1, d2, d3, d4) {
        var d1Y = d1.getFullYear();
        var d2Y = d2.getFullYear();
        var d1M = d1.getMonth();
        var d2M = d2.getMonth();
        var d3Y = d3.getFullYear();
        var d4Y = d4.getFullYear();
        var d3M = d3.getMonth();
        var d4M = d4.getMonth();

        return (((d2M+12*d2Y)-(d1M+12*d1Y))+((d4M+12*d4Y)-(d3M+12*d3Y)));
    },

    inYears: function(d1, d2, d3, d4) {
        var d1Y = d1.getFullYear();
        var d2Y = d2.getFullYear();
        var d3Y = d3.getFullYear();
        var d4Y = d4.getFullYear();

        return ((d2Y-d1Y)+(d4Y-d3Y));
    }
}


var aString = "April, 24, 2010";
var bString = "May, 24, 2011";
var dString = "May, 23, 2016";


var d1 = new Date(aString);
var d2 = new Date(bString);
var d3 = new Date(dString);
var d4 = new Date();


document.write("Service:&nbsp;&nbsp;-&nbsp; "+DateDiff.inYears(d1, d2, d3, d4)  +"&nbsp; Years &nbsp;&nbsp;" +DateDiff.inMonths(d1, d2, d3, d4));
document.write("&nbsp;&nbsp;Months");

</script>
</font>
</center>

变量DateDiff={
inDays:功能(d1、d2、d3、d4){
var t2=d2.getTime();
var t1=d1.getTime();
var t4=d4.getTime();
var t3=d3.getTime();
返回parseInt((t2-t1)/(24*3600*1000)+(t4-t3)/(24*3600*1000));
},
周内:功能(d1、d2、d3、d4){
var t2=d2.getTime();
var t1=d1.getTime();
var t4=d4.getTime();
var t3=d3.getTime();
返回parseInt((t2-t1)/(24*3600*1000*7)+(t4-t3)/(24*3600*1000*7));
},
月份:功能(d1、d2、d3、d4){
变量d1Y=d1.getFullYear();
var d2Y=d2.getFullYear();
var d1M=d1.getMonth();
var d2M=d2.getMonth();
变量d3Y=d3.getFullYear();
var d4Y=d4.getFullYear();
var d3M=d3.getMonth();
var d4M=d4.getMonth();
返回((d2M+12*d2Y)-(d1M+12*d1Y))+((d4M+12*d4Y)-(d3M+12*d3Y));
},
年份:功能(d1、d2、d3、d4){
变量d1Y=d1.getFullYear();
var d2Y=d2.getFullYear();
变量d3Y=d3.getFullYear();
var d4Y=d4.getFullYear();
返回((d2Y-d1Y)+(d4Y-d3Y));
}
}
var aString=“2010年4月24日”;
var bString=“2011年5月24日”;
var dString=“2016年5月23日”;
var d1=新日期(截止日期);
var d2=新日期(bString);
var d3=新日期(dString);
var d4=新日期();
文件。书写(“服务:-”+日期差异以年为单位(d1、d2、d3、d4)+“年”+日期差异以月为单位(d1、d2、d3、d4));
文件。填写(“月”);

我们非常感谢您的帮助。

使用以下方法可能会简单得多:

var差=date2-date1

请看这里:
第一条评论将告诉您如何在几天内或其他单位内获得此信息。只需确保
date2
date1
之后更大

标签<代码>文档。编写
?逻辑也是错误的。从头开始。这回答了你的问题吗?请不要在回答时链接到其他问题的答案。请将该问题标记为另一个问题的副本。谢谢。我也会玩一玩。但如果我有两个不同时期的两个不同的计算,下面的例子,如何将它们相加?2018年1月1日-2018年11月1日(10个月)2015年5月1日-今天(4年8个月)应显示为5年6个月。但实际上显示为4年18个月
var diff=(date2-date1)+(date4-date3)
,然后将其转换为您得到的值。
<center>
<font face=glegoo size=4 color=#909090>
<script type="text/javascript">
var DateDiff = {

    inDays: function(d1, d2, d3, d4) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();
        var t4 = d4.getTime();
        var t3 = d3.getTime();

        return parseInt((t2-t1)/(24*3600*1000)+(t4-t3)/(24*3600*1000));
    },

    inWeeks: function(d1, d2, d3, d4) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();
        var t4 = d4.getTime();
        var t3 = d3.getTime();

        return parseInt((t2-t1)/(24*3600*1000*7)+(t4-t3)/(24*3600*1000*7));
    },

    inMonths: function(d1, d2, d3, d4) {
        var d1Y = d1.getFullYear();
        var d2Y = d2.getFullYear();
        var d1M = d1.getMonth();
        var d2M = d2.getMonth();
        var d3Y = d3.getFullYear();
        var d4Y = d4.getFullYear();
        var d3M = d3.getMonth();
        var d4M = d4.getMonth();

        return (((d2M+12*d2Y)-(d1M+12*d1Y))+((d4M+12*d4Y)-(d3M+12*d3Y)));
    },

    inYears: function(d1, d2, d3, d4) {
        var d1Y = d1.getFullYear();
        var d2Y = d2.getFullYear();
        var d3Y = d3.getFullYear();
        var d4Y = d4.getFullYear();

        return ((d2Y-d1Y)+(d4Y-d3Y));
    }
}


var aString = "April, 24, 2010";
var bString = "May, 24, 2011";
var dString = "May, 23, 2016";


var d1 = new Date(aString);
var d2 = new Date(bString);
var d3 = new Date(dString);
var d4 = new Date();


document.write("Service:&nbsp;&nbsp;-&nbsp; "+DateDiff.inYears(d1, d2, d3, d4)  +"&nbsp; Years &nbsp;&nbsp;" +DateDiff.inMonths(d1, d2, d3, d4));
document.write("&nbsp;&nbsp;Months");

</script>
</font>
</center>