<html>
<head>
<title>js 计时器</title>
<style type="text/css">
.time{
font-size:16px;
}
</style>
</head>
<body>
<div id="timmer" class="time"></div>
<script>
/**
* Desc : 显示倒计时
* @params : format - 日期格式, 如,'year=flase,day=true,minite=true,second=true,i18n=zh-cn'
*/
var yearNum = 0, monthNum = 0, dayNum = 0, hourNum = 0, miniteNum = 0, secondNum = 0;
function displayTime(format, timesTip, i) {
//显示字符串
var displayStr = timesTip[i];
//解析日期格式参数
var params = format.split(",");
//param-参数名,value-参数值
var param = "",value="";
var year = true, month = true, day = true, hour = true, minite = true, second = true;
var yearTxt = "年", monthTxt = "月", dayTxt = "日", hourTxt = "时", miniteTxt = "分", secondTxt = "秒";
for(var i=0; i<params.length; i++) {
var keys = params[i].split("=");
param = keys[0];
value = keys[1];
if(param == "year" && value == "false") {
year = false;
}
if(param == "month" && value == "false") {
month = false;
}
if(param == "day" && value == "false") {
day = false;
}
if(param == "hour" && value == "false") {
hour = false;
}
if(minite == "minite" && value == "false") {
year = false;
}
if(param == "second" && value == "false") {
second = false;
}
}
if(year == true) {
displayStr = displayStr + yearNum.toString() + yearTxt;
}
if(month = true) {
displayStr = displayStr + monthNum.toString() + monthTxt;
}
if(day == true) {
displayStr = displayStr + dayNum.toString() + dayTxt;
}
if(hour == true) {
displayStr = displayStr + hourNum.toString() + hourTxt;
}
if(minite == true) {
displayStr = displayStr + miniteNum.toString() + miniteTxt;
}
if(second == true) {
displayStr = displayStr + secondNum.toString() + secondTxt;
}
displayStr = displayStr;
document.getElementById("timmer").innerHTML = displayStr;
}
/**
* Desc : 计时器核心
* @params: times - 时间节点数组
* timesTip - 时间段显示标题
* format - 时间显示格式化
*/
function timerCore(times, timesTip, format) {
var sysTime = getSysTime();
for(var i=0; i<times.length; i++) {
if(parseInt(times[i],10) > parseInt(sysTime,10)) {
calculate(sysTime, times[i], times, timesTip, format, i);
break;
}
}
}
//计算时间
function calculate(sysTime, flagTime, times, timesTip, format, i){
var poor = poorBewteenTowDate(sysTime, flagTime);
var p = poor;
yearNum = Math.floor(poor / 3600 / 24 / 365);
poor = poor - yearNum * 3600 * 24 * 365;
monthNum = Math.floor(poor / 3600 / 24 / 30);
poor = poor - monthNum * 3600 * 24 * 30;
dayNum = Math.floor(poor/3600/24);
poor = poor - dayNum * 3600 * 24;
hourNum = Math.floor(poor / 3600);
poor = poor - hourNum * 3600;
miniteNum = Math.floor(poor / 60);
poor = poor - miniteNum * 60;
secondNum = Math.floor(poor);
displayTime(format, timesTip, i);
if(p != 0){
sysTime = getSysTime();
setTimeout(function(){calculate(sysTime, flagTime, times, timesTip, format, i);},1000);
} else {
timerCore(times,timesTip, format, i);
}
}
//计算两个日期的时间差
function poorBewteenTowDate(startTime, endTime){
var st = new Date(parseInt(startTime.substring(0,4),10),parseInt(startTime.substring(4,6),10),parseInt(startTime.substring(6,8),10),
parseInt(startTime.substring(8,10),10),parseInt(startTime.substring(10,12),10),parseInt(startTime.substring(12,14),10))
var et = new Date(parseInt(endTime.substring(0,4),10),parseInt(endTime.substring(4,6),10),parseInt(endTime.substring(6,8),10),
parseInt(endTime.substring(8,10),10),parseInt(endTime.substring(10,12),10),parseInt(endTime.substring(12,14),10));
var poor = 0;
if(et.getTime() > st.getTime()){
poor = (et.getTime() - st.getTime())/1000;
}
return poor;
}
//获得系统时间
function getSysTime() {
var datetime = new Date();
var year = datetime.getFullYear();
var month = datetime.getMonth() + 1;
var day = datetime.getDate();
var hour = datetime.getHours();
var minite = datetime.getMinutes();
var second = datetime.getSeconds();
var sum = second + minite*100 + hour*10000 + day*1000000 + month*100000000 + year*10000000000;
return sum.toString();
}
/** 计时器应用 */
var times = new Array(2);
times[0] = "20100704135600";
times[1] = "20100704135630";
var timesTip = new Array(2);
timesTip[0] = "离拍卖开始时间还有:";
timesTip[1] = "离拍卖结束时间还有:";
var format = "year=true,day=true,minite=true,second=true,i18n=zh-cn";
timerCore(times, timesTip, format);
</script>
</body>
</html>
js计时器(IE,Firefox兼容)
最新推荐文章于 2022-07-01 15:41:10 发布