欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javascript DateTimer 时间控件 生肖 星座

程序员文章站 2022-04-30 08:45:13
...

DateTimer = function(elem_id, current) {
			var local = new Date().getTime();
			this.current = current;
			this.diff = current - local;
			this.elem = document.getElementById(elem_id);
		}

		DateTimer.prototype.start = function() {
			var _self = this;
			var timerID = setTimeout(function() {
				_self.start()
			}, 1000);
			if (this.elem == null)
				return;
			if (this.elem == null)
				return;
			var value = new Date().getTime() + this.diff;
			var d = new Date(value);
			var hours = d.getHours();
			var minutes = d.getMinutes();
			var seconds = d.getSeconds();
			if (hours < 10)
				hours = '0' + hours;
			if (minutes < 10)
				minutes = '0' + minutes;
			if (seconds < 10)
				seconds = '0' + seconds;
			var innerstr = hours + ':' + minutes + ':' + seconds;
			this.elem.innerHTML = innerstr;
		}

		DateTimer.prototype.showTime = function() {
			if (this.elem.size() == 0)
				return;
			var ms = this.current;
			var s = h = m = 0;
			s = Math.floor(ms / 1000);
			if (s >= 60) {
				m = Math.floor(s / 60);
				s = s - m * 60
			}
			if (m >= 60) {
				h = Math.floor(m / 60);
				m = m - h * 60
			}
			if (s < 10)
				s = "0" + s;
			if (m < 10)
				m = "0" + m;
			if (h < 10)
				h = "0" + h;
			this.elem.each(function() {
				this.innerHTML = h + ":" + m + ":" + s;
			});
		}

		Timer = function(elem_id, current_ms, callback, showType) {
			this.current_ms = current_ms;
			this.elem = jQuery('[id=' + elem_id + ']');
			this.count = 0;
			this.delay = false;
			this.callback = callback;
			this.timerID = 0;
			this.showType = showType;
			console.info(this.elem);
		}

		Timer.prototype.start = function() {
			var _self = this;
			this.timerID = setTimeout(function() {
				_self.start()
			}, 1000);

			if (this.elem.size() == 0)
				return;
			if (this.showType == "itemTimer") {
				this.showTime2();
			} else {
				this.showTime();
			}
			this.current_ms -= 1000;
			if (this.current_ms <= 0) {
				if (this.showType == "show2") {
					this.elem.each(function() {
						// this.innerHTML = "还剩:0小时0分钟0秒";
							this.innerHTML = "已结束";
						});
				} else {
					this.elem.innerHTML = "00:00:00";
				}
				if (this.callback && typeof this.callback == 'function') {
					try {
						this.callback();
					} catch (err) {
					}
				}
				return;
			}
		}

		Timer.prototype.showTime = function() {
			if (this.elem.size() == 0)
				return;

			var ms = this.current_ms;
			if (ms <= 0) {
				this.innerHTML = "已结束";
				this.clear();
				return;
			}
			var s = h = m = d = 0;
			s = Math.floor(ms / 1000);
			if (s >= 60) {
				m = Math.floor(s / 60);
				s = s - m * 60;
			}
			if (m >= 60) {
				h = Math.floor(m / 60);
				m = m - h * 60;
			}
			if (h >= 24) {
				d = Math.floor(h / 24);
				h = h - d * 24;
			}
			this.elem.each(function() {
				this.innerHTML = "剩余时间:" + (d > 0 ? d + "天" : "") + h + ":" + m
						+ ":" + s + "";
			});
		}

		Timer.prototype.showTime2 = function() {
			if (this.elem.size() == 0)
				return;
			var ms = this.current_ms;
			if (ms <= 0) {
				this.innerHTML = "已结束";
				this.clear();
				return;
			}
			var s = h = m = d = 0;
			s = Math.floor(ms / 1000);
			if (s >= 60) {
				m = Math.floor(s / 60);
				s = s - m * 60;
			}
			if (m >= 60) {
				h = Math.floor(m / 60);
				m = m - h * 60;
			}
			if (h >= 24) {
				d = Math.floor(h / 24);
				h = h - d * 24;
			}
			this.elem.each(function() {
				this.innerHTML = "(剩余:<b>" + (d > 0 ? d + "</b>天<b>" : "") + h
						+ "</b>小时<b>" + m + "</b>分<b>" + s + "</b>秒)";
			});
		}

		Timer.prototype.clear = function() {
			window.clearTimeout(this.timerID);
			this.current_ms = 0;
		}

		function startTimer(id, time, callback, showType) {
			if (time < 0)
				return null;
			var timer = new Timer(id, time, callback, showType);
			timer.start();
			return timer;
		}
		// 调用方式:
		var date = new Date();
		date.addDays(3);

		var remainTime = date.getTime() - new Date().getTime();
		console.info(remainTime);
		startTimer('show_time', remainTime, "", 'itemTimer');

		var DateUtil = new Object();

		// 回去生肖,传入参数必须是四位的年
		DateUtil.getAnimals = function(year) {
			var arr = ['猴', '鸡', '狗', '猪', '鼠', '牛', '虎', '兔', '龙', '蛇', '马',
					'羊']
			return /^\d{4}$/.test(year) ? arr[year] : null;
		};

		// 根据生日的月份和日期,计算星座。
		DateUtil.getConstellation = function(month, day) {
			var str = "魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯";
			var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22];
			return str.substr(month * 2 - (day < arr[month - 1] ? 2 : 0), 2)
					+ "座";
		}

		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;
		};