123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- (function ($, app) {
- Date.prototype.format = function (format) {
- var o = {
- "M+": this.getMonth() + 1, //month
- "d+": this.getDate(), //day
- "h+": this.getHours(), //hour
- "m+": this.getMinutes(), //minute
- "s+": this.getSeconds(), //second
- "q+": Math.floor((this.getMonth() + 3) / 3), //quarter
- "S": this.getMilliseconds() //millisecond
- }
- if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
- (this.getFullYear() + "").substr(4 - RegExp.$1.length));
- for (var k in o)
- if (new RegExp("(" + k + ")").test(format))
- format = format.replace(RegExp.$1,
- RegExp.$1.length == 1 ? o[k] :
- ("00" + o[k]).substr(("" + o[k]).length));
- return format;
- };
- app.leftTime = function (setdate, callback, isCheckTime) {
- var timer = this.timer;
- if (!isCheckTime && isCheckTime != false) {
- isCheckTime = true;
- }
- ;
- var opts = {};
- opts.count = 0;
- //定义变量 d,h,m,s保存倒计时的时间
- var d = 0,
- h = 0,
- m = 0,
- s = 0,
- setCount = 0,
- setCount2 = 0,
- stepCheck = 0,
- status = false;
- if (typeof (setdate) === "object") {
- if (!setdate.init && setdate.init != true) {
- setdate.init = false;
- }
- ;
- var countTime = 0,
- newDateTime,
- setDayNo = 0;
- if (setdate.setday != 0 || setdate.setday != "0") {
- setDayNo = parseInt(setdate.setday) * 86400000;
- }
- if (!setdate.nowdate || setdate.nowdate == null || setdate.nowdate == undefined || setdate.nowdate == "undefined") {
- setdate.nowdate = new Date().getTime();
- newDateTime = new Date();
- } else {
- countTime = (new Date().getTime()) - parseInt(setdate.nowdate);
- newDateTime = new Date(setdate.nowdate);
- }
- var newSeverDateTime = new Date(parseInt(setdate.nowdate) + setDayNo);
- var severStart = 0, severEnd = 0;
- if ((setdate.startdate != 0 && setdate.startdate != "0") && !setdate.init) {
- if (typeof (setdate.startdate) === "string") {
- if (checkDateTime(setdate.startdate)) {
- severStart = new Date((setdate.startdate).replace(/-/g, "/")).getTime();
- } else {
- if (checkIsTime(setdate.startdate)) {
- severStart = new Date(newSeverDateTime.format("yyyy/MM/dd") + " " + setdate.startdate).getTime();
- }
- }
- ;
- } else if (typeof (setdate.startdate) === "number") {
- severStart = setdate.startdate;
- }
- }
- if (setdate.enddate != 0 || setdate.enddate != "0") {
- if (typeof (setdate.enddate) === "string") {
- if (checkDateTime(setdate.enddate)) {
- severEnd = new Date((setdate.enddate).replace(/-/g, "/")).getTime();
- } else {
- if (checkIsTime(setdate.enddate)) {
- severEnd = new Date(newSeverDateTime.format("yyyy/MM/dd") + " " + setdate.enddate).getTime();
- }
- }
- ;
- } else if (typeof (setdate.enddate) === "number") {
- severStart = setdate.enddate;
- }
- }
- ;
- var currDateTime = newDateTime.getTime();
- }
- ;
- function checkDateTime(str) {
- if (str.indexOf("-") != -1 || str.indexOf("/") != -1) {
- return true;
- } else {
- return false;
- }
- }
- function checkIsTime(str) {
- var reg = /^(20|21|22|23|[0-1]\d):[0-5]\d$/;
- if (reg.test($.trim(str))) {
- return true;
- } else {
- return false;
- }
- }
- function checkTime(i) {
- if (i < 10) {
- if (isCheckTime) {
- i = "0" + i;
- }
- }
- return i;
- }
- function leftTimeExeFn() {
- if (typeof (setdate) === "string" || typeof (setdate) === "number") {
- //获取当前时间
- var startDate = new Date();
- var nowTime = startDate.getTime();
- //设置截止时间
- var endTime = 0;
- var leftTimeCount = 0;
- if (typeof (setdate) === "string" || setdate.toString().length >= 12) {
- setdate = typeof (setdate) === "string" && checkDateTime(setdate) == true ? setdate.replace(/-/g, "/") : setdate;
- var endDate = new Date(setdate);
- endTime = endDate.getTime();
- leftTimeCount = endTime - nowTime;
- } else {
- endTime = setdate - opts.count;
- leftTimeCount = endTime * 1000;
- opts.count++;
- }
- if (leftTimeCount > 0) {
- d = Math.floor(leftTimeCount / 1000 / 60 / 60 / 24);
- h = Math.floor(leftTimeCount / 1000 / 60 / 60 % 24);
- m = Math.floor(leftTimeCount / 1000 / 60 % 60);
- s = Math.floor(leftTimeCount / 1000 % 60);
- status = true;
- } else {
- window.clearInterval(timer);
- d = 0;
- h = 0;
- m = 0;
- s = 0;
- status = false;
- }
- } else if (typeof (setdate) === "object") {
- var nowTime = new Date().getTime() + (countTime > 0 ? countTime * -1 : Math.abs(countTime));
- var endTime = 0;
- if (currDateTime < severStart) {
- endTime = severStart;
- stepCheck = 1;
- } else if (currDateTime >= severStart && currDateTime < severEnd) {
- endTime = severEnd;
- stepCheck = 2;
- } else if (currDateTime >= severEnd) {
- stepCheck = 3;
- }
- //时间差
- var countEnd = endTime - nowTime;
- if (countEnd > 0) {
- d = Math.floor(countEnd / 1000 / 60 / 60 / 24);
- h = Math.floor(countEnd / 1000 / 60 / 60 % 24);
- m = Math.floor(countEnd / 1000 / 60 % 60);
- s = Math.floor(countEnd / 1000 % 60);
- status = true;
- } else {
- window.clearInterval(timer);
- d = 0;
- h = 0;
- m = 0;
- s = 0;
- status = false;
- }
- }
- var dataTime = {
- "d": checkTime(d),
- "h": checkTime(h),
- "m": checkTime(m),
- "s": checkTime(s)
- };
- dataTime.status = status;
- dataTime.step = stepCheck;
- if (callback && typeof (callback) === "function") {
- return callback(dataTime);
- }
- }
- leftTimeExeFn();
- timer = setInterval(leftTimeExeFn, 1000);
- if (timer != "undefined" || timer != null || timer != undefined) {
- return timer;
- }
- };
- $.extend(app);
- })(jQuery || zepto, {});
|