C#代码:
/// <summary>
/// 获取倒计时剩余天数
/// </summary>
/// <returns></returns>
private int leftdays(DateTime endDate)
{
DateTime today = DateTime.Now; //当前日期
DateTime testday = endDate; //结束日期
TimeSpan tdays = testday - today; //得到时间差
//int ld = tdays.Days + 1;//得到剩余天数 这里是否加1 根据实际情况来定
int seconds = tdays.Seconds + 86400;//得到剩余描述 这里是否加1 根据实际情况来定
return seconds ;
}
页面js代码:
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>index</title>
<style type="text/css">
em{color:#f00;}
</style>
</head>
<body>
<div id="remaintime"></div>
<script type="text/javascript">
var TheTime = function() {
this.init.apply(this, arguments);
};
TheTime.prototype = {
init: function(obj) {
var that = this;
obj = that.buildParam(obj);
that.callback = obj.callback;
var container = that.container = document.getElementById(obj.container);
container.innerHTML = '<span class="red2"><em></em>天<em></em>小时<em></em>分钟<em></em>秒</span>';
var daySpace=that.daySpace=container.getElementsByTagName('em')[0];
var hourSpace = that.hourSpace = container.getElementsByTagName('em')[1];
var minuteSpace = that.minuteSpace = container.getElementsByTagName('em')[2];
var secondSpace = that.secondSpace = container.getElementsByTagName('em')[3];
if (obj.remaintime == 0) {
that.resetTime();
return;
}
that.hours = Math.floor(obj.remaintime / 3600);
that.days=Math.floor(that.hours/24);
that.hours=that.hours-that.days*24;
that._remainder1 = obj.remaintime % 3600;
that.minutes = Math.floor(that._remainder1 / 60);
that.seconds = that._remainder1 % 60;
var timer = that.timer = setInterval(function() {
that.renderTime.apply(that);
}, 1000);
},
buildParam: function(obj) {
obj = {
//container为dom节点的id
container: obj.container || 'container',
remaintime: Number(obj.remaintime) || 0,
//倒计时完成后的回调
callback: obj.callback || new Function
};
return obj;
},
resetTime: function() {
var that = this;
that.container.innerHTML = "已经截止";
},
//刷新时间
renderTime: function() {
//debugger;
var that = this;
if (that.seconds > 0) {
that.seconds--;
} else {
that.seconds = 59;
if (that.minutes > 0) {
that.minutes--;
} else {
that.minutes = 59;
if (that.hours > 0) {
that.hours--;
}else
{
that.hours=24;
if(that.days>0)
{
that.days--;
}
}
}
}
//时刻监听
if (that.hours == 0 && that.minutes == 0 && that.seconds == 0) {
//执行回调
that._callback();
}
var bitHandle = that.bitHandle;
var _day=bitHandle(that.days);
var _hour = bitHandle(that.hours);
var _minute = bitHandle(that.minutes);
var _second = bitHandle(that.seconds);
that.hourSpace.innerHTML = _hour;
that.minuteSpace.innerHTML = _minute;
that.secondSpace.innerHTML = _second;
that.daySpace.innerHTML=_day;
},
//对于位数的处理,确保返回两位数
bitHandle: function(num) {
var str = num.toString();
if (str.length < 2) {
str = 0 + str;
}
return str;
},
_callback: function() {
var that = this;
clearInterval(that.timer);
that.callback();
}
};
new TheTime({
//容器id
container: 'remaintime',
//服务器返回的剩余时间,单位为秒
remaintime:<%=second %>,
//倒计时完成时的回调
callback: function() {
document.getElementById('remaintime').innerHTML = '已截止';
}
});
</script>
</body>
</html>
Mikel