日期和今天之间的差异

Difference between dates and today

本文关键字:之间 今天 日期      更新时间:2023-09-26

我想计算给定日期范围与今天和给定结束日期的日期范围之间的差异。 最终结果应该在第一步,如下所示: 63 小时中的 3400% 已经花费。好的,因此我尝试执行以下操作:

//A_diffference between given dates
var t1 = new Date(2015, 1, 13, 13, 20, 0, 0);
var t2 = new Date(2015, 2, 27, 13, 20, 0, 0);
var dif = t2.getTime() - t1.getTime();
var gesamt = Math.abs(dif / 3600000); 
    //B_Difference between today and given date
var jetzt = new Date();
var dif2 = t2.getTime() - jetzt.getTime();
var noch = Math.abs(dif2 / 3600000); 
//C_Difference between the 2
    var bereits = gesamt - noch;
var prozent = (bereits/gesamt)*100;

但是我的 B 块中的某些东西一定是错误的,因为我总是从那里获得更多的时间,那么它真的应该是。

有人可以告诉我什么,也许可以提示我如何使事情更优雅一点吗?

由于我想稍后使用计算出的百分比作为标记元素的宽度,因此我想定期调用该查询,从而更新元素的宽度,我会做这样的事情:

proz=prozent+"%"; .ready(function(){$(".foo").css({width:"proz"})});

这对吗?谢谢!

我认为你需要这样的函数:

function spentTime(startDate, endDate){
   var sd = startDate.getTime(), sf = Math.abs(new Date().getTime()-sd);
   return {percent:(Math.abs(sd-endDate.getTime())/sf)*100, total_hours:sf/3600000};
}
var spent = spentTime(new Date(2015, 1, 13, 13, 20, 0, 0), new Date(2015, 2, 27, 13, 20, 0, 0));
console.log(spent.percent);
console.log(spent.total_hours);

如果你想在Javascript中进行合理的日期时间管理,你最终可能会决定使用Moment.js。

 var t1 = moment('2015-01-13T13:20Z');
 var t2 = moment('2015-02-27T13:20Z');
 var difference = t2.diff(t1, 'days');
 var d = document.createElement("span");
 d.appendChild(document.createTextNode('start: ' + t1.format("DD MMMM YYYY") + '; '));
 d.appendChild(document.createTextNode('end: ' + t2.format("DD MMMM YYYY") + '; '));
 d.appendChild(document.createTextNode('difference: ' + difference + ' days'));
 document.body.appendChild(d);
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js"></script>

您可以将不同的参数传递给.diff(),您可以以从毫秒到年的任何单位获取它,只需查看文档即可。

作为此处的参考,月份日期构造函数从 0 到 11 开始

表示

月份的整数值,从 0 表示 1 月开始,到 11 表示 12 月。

所以在你的例子中t1会产生Feb 13t2Mar 27

如果你得到不同的t2 - now这是Jan 17所以它会变得比t2 - t1的结果更多

为什么不使用Moment.js来操纵日期?我对你具体需要做什么有点困惑。但使用 Moment,您可以执行以下操作:

moment().add(7, 'days').subtract(1, 'months').year(2009).hours(0).minutes(0).seconds(0);