<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>时间倒计时</title>
<script src="js/jquery-1.7.1.js"></script>
<script src="js/time-js.js"></script>
</head>
<body>
<div id="showTime">
</div>
</body>
<script>
$("#showTime").countdown({
Sdate: "2013-03-15 15:41:10",
Edate: "2013-03-18 16:00:00"
});
</script>
</html>
时间插件
; (function ($) {
; (function ($) {
$.fn.countdown = function (options) {
//判断是否有事件存在
if (this.length == 0) {
return false;
}
return this.each(function () {
var Default = {
Sdate: null,//开始时间
Edate: null,//结束日期
callback: function () {
return false;
}
},
_H_Text = '小时',
_M_Text = '分',
_S_Text = '秒',
_lT = null,
_cT = new Date(),//创建一个日期
_eT = null,
_elT = null,
ctime = null,
etime = null,
DomId = null,
_timeout = null,//定时器
_gt = function () {
if (_lT == null) {
_elT = (etime - ctime);
//在没有设置时间的时候将时间内容定为0时0分0秒
//数字是一位数
if (_elT < 0) {
$('#' + DomId).html("距离结束还有:<strong>0</strong>" + _H_Text + ":<strong>0</strong>" +
_M_Text + ":<strong>0</strong>" + _S_Text);
}
var _xT = Math.ceil(_elT / (24 * 60 * 60 * 1000));
//匹配小时分钟和秒,格式为xx:xx:xx
_cT = parseInt(_cT.match(/\s(\d+)\D/)[1] * 3600) + parseInt(_cT.split(":")[1] * 60) + parseInt(_cT.split(":")[2]);
_eT = _xT * 24 * 3600 + parseInt(_eT.match(/\s(\d+)\D/)[1] * 3600)
+ parseInt(_eT.split(":")[1] * 60) + parseInt(_eT.split(":")[2]);
_lT = _elT / 1000;
}
if (_elT > 0) {
if (_lT >= 0) {
var _H = Math.floor(_lT / 3600);
var _M = Math.floor((_lT - _H * 3600) / 60);
var _S = (_lT - _H * 3600) % 60;
//数字是两位数
$('#' + DomId).html("距离结束还有:<strong>" + _H + "</strong>" + _H_Text + ":<strong>"
+ _M + "</strong>" + _M_Text + ":<strong>" + _S + "</strong>" + _S_Text);
_lT--;
} else {
clearInterval(_timeout);
if (s.callback && $.isFunction(s.callback)) {
s.callback.call(this);
}
}
} else {
clearInterval(_timeout);
if (s.callback && $.isFunction(s.callback)) {
s.callback.call(this);
}
}
},
strDateTime = function (str) {
//判断日期时间的输入是否正确,类型必须形如为:2011-01-01 01:01:01
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r = str.match(reg);
if (r == null) return false;
var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]);
return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]
&& d.getHours() == r[5] && d.getMinutes() == r[6] && d.getSeconds() == r[7]);
}
var s = $.extend({}, Default, options || {});
DomId = this.id;
if (DomId == 'null') {
return;
}
_eT = s.Edate;
if (!strDateTime(_eT)) {
alert('结束日期格式不正确');
return false;
}
if (s.Sdate != null) {
_cT = s.Sdate;
}
_cT = _cT.toString();
cdate = _cT.replace(/-/g, '/');
_eT = _eT.toString();
edate = _eT.replace(/-/g, '/');
ctime = new Date(cdate);
etime = new Date(edate);
_timeout = setInterval(_gt, 1000)
});
}
})(jQuery);