JavaScript计算两个日期之间的差异,在年,月,日,小时,分钟
JavaScript calculate difference between two dates, in Years, Months, Days, Hours, Minutes
我从很多网站上收集了这个JavaScript,这个脚本可以提供到目前为止我所需要的,即所选日期和当前日期之间的差异,我复制了许多代码,给出了相同的结果,但我想如果我使用一个单一的函数[我不知道如何使用它]会在更少的代码给出相同的结果,
这是我的脚本,
<script type="text/javascript">
var s = '2015-05-21T10:17:28.593Z';
var a = s.split(/[^0-9]/);
var d=new Date (a[0],a[1]-1,a[2],a[3],a[4],a[5] );
var fromDate = new Date(d);
var toDate = new Date();
// current date format as mm-dd-yyyy
var Current_Day = new Date();
var sec = Current_Day.getSeconds();
var min = Current_Day.getMinutes();
var hr = Current_Day.getHours();
var dd = Current_Day.getDate();
var mm = Current_Day.getMonth()+1; //January is 0!
var yyyy = Current_Day.getFullYear();
//
if(dd<10){
dd='0'+dd
}
if(mm<10){
mm='0'+mm
}
if(hr<10){
hr='0'+hr
}
if(min<10){
min='0'+min
}
//
var Current_Day = dd+'-'+mm+'-'+yyyy+' <span style="color:#008000;font-weight:800;">( '+hr+ ":" +min+ ":" +sec+' )</span>';
// current date format as mm-dd-yyyy
var Start_Date = new Date(d);
var sec = Start_Date.getSeconds();
var min = Start_Date.getMinutes();
var hr = Start_Date.getHours();
var dd = Start_Date.getDate();
var mm = Start_Date.getMonth()+1; //January is 0!
var yyyy = Start_Date.getFullYear();
if(dd<10){
dd='0'+dd
}
if(mm<10){
mm='0'+mm
}
if(hr<10){
hr='0'+hr
}
if(min<10){
min='0'+min
}
var Start_Date = dd+'-'+mm+'-'+yyyy+' <span style="color:#008000;font-weight:800;">( '+hr+ ":" +min+ ":" +sec+' )</span>';
// End date format as mm-dd-yyyy
// Start_Date = str;
var differenceTravel = toDate.getTime() - fromDate.getTime();
YearDifferenceTravel = Math.floor(differenceTravel / 1000 / 60 / 60 / 24 / 365);
var month = toDate.getMonth() - fromDate.getMonth() + (12 * (toDate.getFullYear() - fromDate.getFullYear()));
var diffDays = Math.floor((differenceTravel) / (1000 * 60 * 60 * 24));
var hours = Math.floor((differenceTravel) / (1000 * 60 * 60));
var minutes = Math.floor((differenceTravel) / (1000 * 60));
var seconds = Math.floor((differenceTravel) / (1000));
var difference_ms = differenceTravel;
// Deference Years, Months, Days
var Tyears = Math.round(differenceTravel / (365*60*60*24*1000));
var Tmonths = Math.round((differenceTravel - (Tyears * 365*60*60*24*1000)) / (1000*60*60*24*30));
var Tdays = Math.round((differenceTravel - Tyears - Tmonths) / (1000*60*60*24*30));
//
document.writeln('<div>');
document.writeln('<ul>');
document.writeln('<span style="color:#008000">Information:</span>');
document.writeln('<li><span style="color:#008000">Start date is :</span> ' + Start_Date+'</li>');
document.writeln('<li><span style="color:#8080C0">Today date is :</span> '+ Current_Day +'</li>');
document.writeln('<br />');
document.write('Total in between selected dates are: <br />'+ Tyears +'<span style="color:#008000"> year(s) and </span> '+ Tmonths +'<span style="color:#008000"> month(s) and </span>'+ Tdays +'<span style="color:#008000"> day(s)</span></li>');
document.writeln('<br /><br />');
document.writeln('<span style="color:#8080C0">From beginning, Date & Times equal to:</span>');
document.write('<li>Total Year in between : '+ YearDifferenceTravel +'</li>');
document.write('<li>Total Month in between :<span style="color:#400000;font-weight:800;"> '+ month +'</span></li>');
document.write('<li>Total Days in between : '+ diffDays +'</li>');
document.write('<li>Total Hours in between : '+ hours +'</li>');
document.write('<li>Total Minutes in between : '+ minutes +'</li>');
document.write('<li>Total Seconds in between : '+ seconds +'</li>');
document.write('<li>Total Millisecond in between : '+ difference_ms +'</li>');
document.writeln('</ul>');
// -----
document.writeln('</div>');
</script>
如果您看到我重复了这段代码以获得结果,
if(dd<10){
dd='0'+dd
}
if(mm<10){
mm='0'+mm
}
if(hr<10){
hr='0'+hr
}
if(min<10){
min='0'+min
}
我想有人帮我纠正这个脚本比它的行数少。
可能不是最好的,但我认为这是非常清楚的
var FromDate = new Date(2001, 9, 11, 1, 23, 45);
var ToDate = new Date();
function compareDates(beginDate, endDate) {
var tDate = beginDate;
var neg = false;
if (beginDate > endDate) {
beginDate = end;
endDate = tDate;
neg = true;
}
tDate = new Date(beginDate);
function doCompare(from, end, what) {
var ret = -1;
while (from <= end) {
ret++;
from['set' + what](from['get' + what]() + 1);
}
from['set' + what](from['get' + what]() - 1);
return ret;
}
return {
negative: neg,
years: doCompare(tDate, endDate, 'FullYear'),
months: doCompare(tDate, endDate, 'Month'),
days: doCompare(tDate, endDate, 'Date'),
hours: doCompare(tDate, endDate, 'Hours'),
minutes: doCompare(tDate, endDate, 'Minutes'),
seconds: doCompare(tDate, endDate, 'Seconds')
};
}
console.log(compareDates(FromDate, ToDate));
相关文章:
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- 如何获得Bootstrap Datepicker的年和月,因为它在变化
- 2012年12月迁移在App Dashboard中不可用
- 如何在不活动5分钟后更改页面位置
- 发布后的应用程序在几分钟后停止更新更新面板
- 如何每10分钟运行一次函数,在10分钟标记上,每小时运行6次
- 设置饼干并在一分钟内过期
- 节点 - MySQL 查询,需要几分钟时间,在几分钟后重复自己,然后完成原始查询
- 长时间运行的AJAX请求在几分钟后重新提交
- 带有cookie的JavaScript倒计时计时器在一分钟后停止
- javascript会在10分钟内侦听http post请求,如果不取消它的话
- 如何使用javascript/jquery在30分钟内未使用表单字段时显示警报消息
- 如何限制元素在一分钟内被点击的次数?
- setTimeout在几分钟后发疯,FF6.0, Chrome 15
- JavaScript计算两个日期之间的差异,在年,月,日,小时,分钟
- 如何使用javascript在10分钟后显示图像
- 如何使用deleteMessage让Discord机器人在()分钟后清除混乱
- 简单服务器发送事件:时钟在 30 分钟后停止
- 更新后的javascript文件在几分钟内没有被服务器分发
- 每小时在:00分钟和:30分钟重新加载页面