时间倒计时插件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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 ($) {
    $.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);
原文地址:https://www.cnblogs.com/xiaoleidiv/p/3138808.html