【问题标题】:DateDiff from four dates来自四个日期的 DateDiff
【发布时间】:2020-04-21 14:29:44
【问题描述】:

我正在尝试从两个不同的时间段计算某个人的服务时间。 我一直在使用 DateDiff 脚本,该脚本非常适合在两个日期之间显示(如下):

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

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

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

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

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

    inMonths: function(d1, d2) {
        var d1Y = d1.getFullYear();
        var d2Y = d2.getFullYear();
        var d1M = d1.getMonth();
        var d2M = d2.getMonth();

        return (d2M+12*d2Y)-(d1M+12*d1Y);
    },

    inYears: function(d1, d2) {
        return d2.getFullYear()-d1.getFullYear();
    }
}

var dString = "May, 23, 2016";

var d1 = new Date(dString);
var d2 = new Date();

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

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

但我想添加上一时期的服务时间,然后将其组合在一起,显示总年数和月数。 我曾尝试以自己的方式“加倍”脚本,但现在开始将头撞在桌子上。当月份计算超过 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>

非常感谢任何帮助。

【问题讨论】:

标签: javascript datediff


【解决方案1】:

使用它可能会更简单:

var difference = date2 - date1;

看看这里:How to calculate date difference in JavaScript? 第一条评论将告诉您如何在几天或其他单位内获得此信息。只要确保date2 更大(之后)date1

【讨论】:

  • 请不要使用指向另一个问题答案的链接来回答。请将问题标记为与其他问题重复。
  • 谢谢。我也会玩这个。但是,如果我对两个不同的时期有两个不同的计算,例如下面的示例,如何将它们加在一起? 2018 年 1 月 1 日 - 2018 年 11 月 1 日(10 个月) 2015 年 5 月 1 日 - 现在(4 年 8 个月) 这应该显示为 5 年 6 个月。但实际上显示为 4years, 18months
  • var diff = (date2 - date1) + (date4 - date3) 然后你把这个(毫秒)转换成你想要的。
猜你喜欢
  • 2022-10-17
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
相关资源
最近更新 更多