日期和今天之间的差异
Difference between dates and today
我想计算给定日期范围与今天和给定结束日期的日期范围之间的差异。 最终结果应该在第一步,如下所示: 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 13
,t2
是Mar 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);
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- java.net和javascript之间正则表达式的差异
- JavaScript中的函数和对象之间没有区别吗?
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Jquery在函数之间传递表行
- 根据某些条件在视图之间切换
- 在控制器和数据对象之间同步数据
- d3中堆栈函数和嵌套函数之间的差异
- JQuery:在页面之间滑动
- 如何使用JavaScript查找1和N之间的所有数字的总和
- Jquery如何检查今天的时间大于使用给定时间
- 操作放置在画布上的元素之间的连接
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- jquery在表单之间切换
- Nodejs API控制器,用于在API之间切换
- 从表列中检索日期,并根据从今天到日期之间的天数使行的颜色发生变化
- 日期和今天之间的差异
- 数据库日期和今天日期之间的差异
- Mongo查询今天是否's的日期在另外两人之间