js倒计时在移动端的应用(Android与ios获取时间的区别)

//在安卓上这样写可以获取到的

var date = '2018-08-29 17:50:13';
var time = new Date(date).getTime();

//但在苹果手机上是不支持的,必须这样写:
var time = new Date(date.replace(/-/g,'/')).getTime();

/**
 * 短信/邮件倒计时插件
 * @param {} cfg 配置参数 
 *  示例:
 *  	new VcodeTimer({eleId:eleId, minutes:0.1,enableFn:function(){alert("可以重新发送了");}}).start();
 */
var VcodeTimer = function(cfg){
	var eleTxt = null;
	//var repMsg = cfg.repMsg || '重新获取';
	var repMsg = cfg.repMsg || '';
	var eleId = cfg.eleId;
	var minutes = cfg.minutes || 1;//分钟
	var curCount = minutes * 60; //当前计数器 按秒为单位计数
	var enableFn = cfg.enableFn;//当计时器归0,可以重新发送验证码时的回调函数
	var isButton = true;
	var timer = null;
	var fn = null;
	var backgroundColor = null;
	var pl = 1000; //1秒
	var self = this;
	 this.start = function(){
		self.doCount();
		timer = window.setInterval(self.doCount, pl);
	 };
	 
	 this.doCount = function(){
		 if(curCount == 0){
			 window.clearInterval(timer);//停止计时器
			 self.enable();
		 }else{
			 curCount--;
			 self.disable();
		 }
	 };
	 
	 /* 重新启用  */
	 this.enable = function(){
		 var ele = $("#"+eleId);
		 if(isButton){
			 ele.removeAttr("disabled");
		 }else{
			 var bcolor = '';
			 if(backgroundColor){
				 bcolor = backgroundColor;
			 }
			 ele.css({
				 "background-color":bcolor
			 });
			 var _fn = ele.attr("onclick");
			 if(!_fn){
				 ele.attr("onclick",fn);
			 }
		 }
		 self.setValue(repMsg);
		 if(enableFn) enableFn();
	 };
	 
	 /* 禁用 */
	 this.disable = function(){
		 var ele = $("#"+eleId);
		 if(isButton){
			 ele.attr("disabled","disabled");
		 }else{
			 ele.css({
				 "background-color":"#CBCDD1"
			 });
			 var _fn = ele.attr("onclick");
			 if(_fn){
				 ele.removeAttr("onclick");
			 }
		 }
		 var tip = repMsg;
		 if(curCount > 0){
			 tip += ""+curCount+"秒";
		 }
		 self.setValue(tip);
	 };
	 
	 this.setValue = function(txt){
		 if(isButton){//按钮
			 $("#"+eleId).val(txt);
		 }else{//普通元素
			 $("#"+eleId).text(txt);
		 }
	 };
	 
	 /*初始化函数*/
	 (function(){
		 if(!eleId) return;
		 var ele = document.getElementById(eleId);
		 var tagName = ele.tagName;
		 var jq_ele = $("#"+eleId);
		 if(tagName && tagName == 'INPUT'){
			 isButton = true;
			 eleTxt = jq_ele.val();
		 }else{
			 isButton = false;
			 eleTxt = jq_ele.text();
		 }
		 fn = jq_ele.attr("onclick");
		 backgroundColor = jq_ele.css("background-color");
	 })();
 };
 
 /**
  * 倒计时插件
  * @author L
  * @date 2018-08-29 10:35
  * @example
  * 	var cdTimer = new CountdownTimer({
  * 					startTime : '2016-09-22 12:35:00'
  * 					endTime : '2016-09-22 12:36:00',
  * 					dayId : 'sp_day',
					    hourId : 'sp_hourId',
					    minuteId : 'sp_minuteId',
					    secondId : 'sp_secondId',
  * 				 });
  *   cdTimer.start();
  */
 var CountdownTimer = function(cfg){
	 var startTime = cfg.startTime;
	 var endTime = cfg.endTime;
	 var d_eleId = cfg.dayId;
	 var h_eleId = cfg.hourId;
	 var m_eleId = cfg.minuteId;
	 var s_eleId = cfg.secondId;
	 var timer = -1;
	 var callback = cfg.callback;
	 var firstCb = cfg.firstCb;
	// var nowTime = new Date();
	 var num = 0;
	 var counter = 0;
	 if(startTime){
		 startTime = new Date(Date.parse(startTime));
		num = startTime.getTime();
	 }
	 /**
	  * 开始倒计时方法
	  * @param _endTime 倒期时间 【可选参数】
	  */
	 this.start = function(_endTime){
		 if(_endTime){
			 endTime = _endTime;
		 }
		 timer = window.setInterval(this.cal, 1000);
	 };
	 
	 /**
	  * 倒计时时间核心算法
	  */
	 this.cal = function(){
		 if(counter == 0 && firstCb) firstCb();
		 num += 1000;
		 counter++;
		//var timeseconds = nowTime.getTime()-(num*1000);
		var nowTime = new Date();
		nowTime.setTime(nowTime);
		endTime = new Date(Date.parse(endTime));
		
		var t = endTime.getTime() - nowTime.getTime();
		var d = 0;
		var h = 0;
		var m = 0;
		var s = 0;
		if(t > 0){
			if(d_eleId) d = Math.floor(t/1000/60/60/24);
			if(h_eleId) h = Math.floor(t/1000/60/60%24);
			if(m_eleId) m = Math.floor(t/1000/60%60);
			if(s_eleId) s = Math.floor(t/1000%60);
		}else{
			if(callback) callback();
		}
		
		if(d_eleId){//倒计时 “天”
			var strD = d;
			if(d < 10){
				strD = "0"+d;
			}
			$("#"+d_eleId).html(strD);
		}
		 
		if(h_eleId){//倒计时 “时”
			var strH = h;
			if(h < 10){
				strH = "0"+h;
			}
			$("#"+h_eleId).html(strH);
		}
		
		if(m_eleId){//倒计时 “分”
			var strM = m;
			if(m < 10){
				strM = "0"+m;
			}
			console.log("strM:"+strM);
			$("#"+m_eleId).html(strM);
		}
		
		if(s_eleId){//倒计时 “秒”
			var strS = s;
			if(s < 10){
				strS = "0"+s;
			}
			$("#"+s_eleId).html(strS);
		}
		//console.log(h+":"+m+":"+s);
		if(d <= 0 && h <= 0 && m <= 0 && s <= 0){//倒计时已到期,停止计时器
			window.clearInterval(timer);
			if(callback) callback();
		}
	 };
 };



function formatDate(time){
    var date = new Date(time);
    var year = date.getFullYear(),
        month = date.getMonth()+1,//月份是从0开始的
        day = date.getDate(),
        hour = date.getHours(),
        min = date.getMinutes(),
        sec = date.getSeconds();
    var newTime = year + '-' +
        (month < 10? '0' + month : month) + '-' +
        (day < 10? '0' + day : day) + ' ' +
        (hour < 10? '0' + hour : hour) + ':' +
        (min < 10? '0' + min : min) + ':' +
        (sec < 10? '0' + sec : sec);
    return newTime;
}
 

相关连接:https://www.cnblogs.com/dxzg/p/8400406.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值