您的位置:首页 > Web前端 > JavaScript

JS倒计时功能,给定时间返回规定格式倒计时时间

2015-05-12 12:38 267 查看
重写了一下,增强了通用性,重写时发现月份和年份计算很复杂,因为月份天数不一样,年份又涉及平年闰年;
本人数学实在不佳无法写出算法,哪位大大日后写出来了分享给小弟一份,谢谢~。



<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>

<body>
<p id="disBlock"></p>
</body>
<script type="text/javascript">
var results={millisecond:"", second:"",minute:"", hour:"",day:"",month:"",year:""};   //结果集
//计算剩余
function calcSurplus(fdate){
var odate = new Date(fdate);  //未来的时间
var cdate, surplusDate;       //当前时间,剩余时间
/*            var year = new Date().getYear();   //当前年份
var february = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ? 29 : 28; //计算二月份的天数
var days = new Array(31,february,31,30,31,30,31,31,90,31,30,31);*/
function result() {
cdate = new Date();
surplusDate = odate.getTime() - cdate.getTime();  //未来时间与当前时间相差的毫秒
with(results){
millisecond = surplusDate % 1000;          //总毫秒数模1000就是换算为秒后剩余的毫秒
surplusDate -= millisecond;                //总毫秒减去剩余的毫秒
second = (surplusDate / 1000) % 60;        //(surplusDate / 1000)减去多余的毫秒剩下的毫秒/1000,
surplusDate -= second * 1000;              //则为剩余毫秒转换为秒后的数值,然后用该数值模60则为剩下的分钟
minute = (surplusDate / 60000) % 60;       //后面的运算以此类推,先减去前面已经算过的毫秒值
surplusDate -= minute * 60000;             //然后用当前毫秒除以当前单位的运算值,然后取模该单位的上级单位
hour = (surplusDate / 3600000) % 24;
surplusDate -= hour * 3600000;
day = (surplusDate / 86400000) ;
/*surplusDate-=day*86400000;
month=(surplusDate / (86400000*days[cdate.getMonth()]))%12;
surplusDate-=month*(86400000*days[cdate.getMonth()]);
year=Math.floor(surplusDate/(86400000*(337+february)));   //年没有上级单位,所以只需要用剩下的毫秒去除以换算值然后在向下取整就可以了*/
/*                    year=Math.floor(surplusDate/(86400000*(365)));   //剩余年数
surplusDate-=year*31536000000;
for(var i=1;i<=year;i++){                 //对年数循环,检查需要走过多少个闰年
if((cdate.getYear() % 4 == 0 && cdate.getYear() % 100 != 0) || cdate.getYear() % 400 == 0 ){
surplusDate-=86400000;        //如果是闰年,多减一天的毫秒数
}
}*/
// 平年平均每月的毫秒数 2628000000
// 闰年平均每月的毫秒数 2635200000
/*                    var mis=february==28?2628000000:2635200000;
month=(surplusDate/mis)%12;
surplusDate-=month*mis;*/
}
return results;
}
return result;
}

var setHtml = calcSurplus("2015/07/12 16:08:11");

setInterval(function(){
setHtml();
var html=/*results.year+"年"+results.month+"月"+*/results.day+"天"+results.hour+"时"+results.minute+"分"+results.second+"秒"+results.millisecond+"毫秒";
document.getElementById("disBlock").innerHTML=html;
},1);
</script>
</html>





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: