[英]get day of month difference javascript
我想得到几天和几年中两个日期之间的差额。 问题在于,由于每个月没有固定的天数,因此我无法弄清楚如何将2个日期与28到31天之间的月进行比较。 我已经做了几年和几个月,因为我知道一年有12个月,所以我可以计算出来。 也许有人知道解决这个问题的方法。 这是我到目前为止所拥有的。 谢谢阅读。
var date1 = new Date(2013,10,1);
var date2 = new Date();
var y1 = date1.getFullYear();
var m1 = date1.getMonth();
var y2 = date2.getFullYear();
var m2 = date2.getMonth();
var totDiff = (y1 - y2) * 12 + (m1 - m2 -1);
var yDiff = Math.floor(Math.abs(totDiff) / 12);
var mDiff = totDiff - (Math.floor((totDiff) / 12) * 12);
console.log("years: " + yDiff + " months: " + mDiff);
我将在“ while”循环中迭代一个日期,增加较低的日期并计算实现较大日期所需的迭代次数。 这样,您可以计算任何时间单位的差异。
该方法可能如下所示。 很多代码,但是我希望它很清楚(请参见下面的“ dateDiff ”方法):
function addTime(date, unit){
var date = new Date(date);
switch (unit){
case "day":
date.setDate(date.getDate() + 1);
break;
case "month":
date.setMonth(date.getMonth() + 1);
break;
case "year":
date.setYear(date.getFullYear() + 1);
break;
}
return date;
}
function dateDiff(from, to){
var from = new Date(from),
to = new Date(to),
res = {
days:0,
months:0,
years:0
};
while(addTime(from, 'year').valueOf() <= to.valueOf()){
res.years++;
from = addTime(from, 'year');
}
while(addTime(from, 'month').valueOf() <= to.valueOf()){
res.months++;
from = addTime(from, 'month');
}
while(addTime(from, 'day').valueOf() <= to.valueOf()){
res.days++;
from = addTime(from, 'day');
}
return res;
}
和用法:
dateDiff(new Date(..some date..), new Date(..some greater date..))
例
console.log( dateDiff(new Date(2013, 11, 1), new Date()) );
//Object {days: 26, months: 0, years: 0}
console.log( dateDiff(new Date(2000, 0, 1), new Date()) );
//Object {days: 26, months: 11, years: 13}
var today=new Date('January 01, 2014 00:00:00');
var tt=new Date();
var ss=(today-tt)/1000;
days = parseInt(ss / 86400);
ss = ss % 86400;
hours = parseInt(ss / 3600);
ss = ss % 3600;
minutes = parseInt(ss / 60);
seconds = parseInt(ss % 60);
document.getElementById('d').innerHTML=days;
document.getElementById('h').innerHTML=hours;
document.getElementById('m').innerHTML=minutes;
document.getElementById('s').innerHTML=seconds;
通过使用上面的一些计算,您可以找到年,天,小时。分钟的两个日期之间的差异,甚至以秒为单位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.