//在安卓上这样写可以获取到的
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;
}