js计算时间差,包括年、天、时、分、秒

JavaScript 小智 2687℃ 1评论

看别人的网站,经常会发现有些会在网页的底部加上“本站已运行x天x时x分x秒”,一开始以为实现起来还比较麻烦(单纯的认为起始数据在文件或者数据库中进行了保存),后来网上查看才发现,纯粹就是一个简单的js方法就可以实现。
稍稍麻烦的就是,要计算两个时间之间的年数差,必须要考虑平年和闰年的问题。
拓展:怎样才是闰年?
需要同时满足两个条件:
1、年份能被4整除;
2、年份若是100的整数倍的话,需被400整除,否则是平年
比如:1900年能被4整除,但是因为其是100的整数倍,却不能被400整除,所以是平年
代码如下:

//初始化时间
//为了提高兼容性注意创建日期的格式,还要添加引号
var start = new Date("2000/12/1");
//把以下内容放到script标签内,创建id为times的div,并开启下面一条语句注释
//show_date_time();

function show_date_time(){
	//周期性调用show_date_time()方法
	setTimeout("show_date_time()", 1000);

	var current = new Date();
	//总秒数
	var millisecond = Math.floor((current.getTime() - start.getTime())/1000);
	
	//总天数
	var allDay = Math.floor(millisecond/(24*60*60));

	//注意同getYear的区别
	var startYear = start.getFullYear();
	var currentYear = current.getFullYear();
	
	//闰年个数
	var leapYear = 0;
	for(var i=startYear;i<currentYear;i++){
		if(isLeapYear(i)){
			leapYear++;
		}
	}

	//年数
	var year = Math.floor((allDay - leapYear*366)/365 + leapYear);;
	//天数
        var day;
        if(allDay > 366){
	        day = (allDay - leapYear*366)%365;
        }else{
                day = allDay;
        }
	//取余数(秒)
	var remainder = millisecond%(24*60*60);
	//小时数
	var hour = Math.floor(remainder/(60*60));
	//分钟数
	var minute = Math.floor(remainder%(60*60)/60);
	//秒数
	var second = remainder - hour*60*60 - minute*60; 
	var span = "本站已运行" + (year>0 ? (year + "年"):"") + day + "天" 
        + hour + "小时" + minute + "分" + second + "秒" ; 
	document.getElementById("times").innerHTML = span;
}

//判断是否是闰年
function isLeapYear(year){
	if((year%4==0 && year%100!=0)||(year%100==0 && year%400==0)){
		return true;
	}
	return false;
}

本文固定链接:心知博客 » js计算时间差,包括年、天、时、分、秒
本站内容除特别标注外均为原创,欢迎转载,但请保留出处!

喜欢 (10)
发表我的评论
取消评论
表情

请填写您的昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 挺不错,学到了φ(゜▽゜*)♪
    郑_2016-12-10 07:54回复