jq 时间计算

时间差计算:

-(function($){
        var caculation = function(gap){
            var minutes = 1000 * 60
            var hours = minutes * 60
            var days = hours * 24
            var years = days * 365
            if(gap/years >= 1){
                return parseInt(gap/years)+'年';
            }else if(gap/days >= 30){
                return parseInt(gap/days/30)+'个月'
            }else if(gap/hours >= 24){
                return parseInt(gap/hours/24)+'天'
            }else if(gap/minutes >=60){
                var num = gap/minutes/60;
                var intNum = parseInt(gap/minutes/60);
                return intNum+'小时'+parseInt((num.toFixed(4)-intNum)*60)+'分钟'
            }else{
                return parseInt(gap/minutes)+'分钟'
            }
        }
        $.extend({
            nowToTime:function(time){
                var theTime = Date.parse(time .replace(/-/g,"/"));
                var curDate=new  Date().valueOf();//当前时间的时间戳
                if(theTime <=curDate){
                    alert("请选择大于今天的时间!");
                }else{
                    var gap = theTime - curDate;
                    return caculation(gap)
                }
            },
            timeToNow:function(time){
                var theTime = Date.parse(time .replace(/-/g,"/"));
                var curDate=new  Date().valueOf();
                if(theTime <=curDate){
                    var gap =  curDate - theTime;
                    return caculation(gap)
                }else{
                    alert("请选择小于今天的时间!");
                }
            },
            timeToTime:function(timeOne,timeTwo){
                if(timeOne == undefined && timeTwo == undefined){
                    alert('请输入日期');
                    return false;
                }
                var timeOne = timeOne == undefined ?
                new  Date().valueOf():
                Date.parse(timeOne .replace(/-/g,"/"));
                var timeTwo = timeTwo == undefined ?
                new  Date().valueOf():
                Date.parse(timeTwo.replace(/-/g,"/"));
                var gap = timeOne > timeTwo?
                timeOne-timeTwo:
                timeTwo-timeOne;
                return caculation(gap)
            
            }
        })
    })(jQuery);
    console.log($.nowToTime('2017-7-16 17:51:34')+'后');
    console.log($.timeToNow('2017-07-15 18:01:23')+'前');
    console.log($.timeToTime('2017-07-15 18:01:23','2018-06-16 19:02:23'))

倒计时:

;(function() {

    var Grewer = {
        init:function(option,obj){
              var trigger = option.trigger || 's',
                limit = (option.limit === 'over') ? '1' : (option.limit === 'inadequate') ? '-1' : '0',
                time = option.time;
            console.log(trigger, limit, time)
              
            var now = (new Date()).valueOf();
            var gap = now - (new Date(time)).valueOf();
         
            switch (limit) {
                case '0':
                        this.addHtml(obj, gap,trigger,limit);
                    break;
                case '1':
                    if (gap < 0) {
                        this.addHtml(obj, gap, trigger,limit);

                    } else {
                        console.error('未超过当前时间')
                        alert('未超过当前时间')
                    }
                    break;
                case '-1':
                    if (gap >= 0) {
                        this.addHtml(obj, gap,trigger, limit);

                    } else {
                        console.error('超过了当前时间')
                        alert('超过了当前时间');
                    }
            }
        },
        addHtml:function(obj,gap,trigger){
            this.caculation(gap)
           

            var html = (trigger === 's') ? '<div class="GrewerTime"><span class="hours">' + this.intHours + '</span>小时<span class="minutes">' + this.intMinutes + '</span>分<span class="second">' + this.intSeconds + '</span>秒</div>' :
            '<div class="GrewerTime"><span class="hours">' + this.intHours + '</span>小时<span class="minutes">' + this.intMinutes+ '</span>分</div>';

            obj.append(html);

            (trigger === 's') ? this.addTrigger(obj) : this.addHourTrigger(obj);
        },
        caculation:function(gap){
            gap = Math.abs(gap);
            var minutes = 1000 * 60,
                hours = minutes * 60,
                days = hours * 24

            this.intHours = (gap / hours) | 0;
            this.intMinutes = ((gap - this.intHours * hours) / minutes) | 0;
            this.intSeconds = ((gap - this.intMinutes * minutes - this.intHours * hours) / 1000) | 0;
        },
        addTrigger:function(obj){
            setTimeout(function() {
            var hours = obj.find('.hours').text(),
                minutes = obj.find('.minutes').text(),
                second = obj.find('.second').text();

            if (second <= 0) {
                if (minutes <= 0) {
                    if (hours <= 0) {
                        return false;
                    }
                    this.minus(obj.find('.hours'));
                    obj.find('.second').text(59);
                    obj.find('.minutes').text(59);
                } else {
                    this.minus(obj.find('.minutes'));
                    obj.find('.second').text(59);
                }
                return this.addTrigger(obj);
            }

            this.minus(obj.find('.second'));
            this.addTrigger(obj);

        }.bind(this), 1000);
        },
        addHourTrigger:function(obj){

        setTimeout(function() {
            var hours = obj.find('.hours').text(),
                minutes = obj.find('.minutes').text()

            
                if (minutes <= 0) {
                    if (hours <= 0) {
                        return false;
                    }
                    this.minus(obj.find('.hours'));
                    obj.find('.minutes').text(59);
                    return this.addHourTrigger(obj);
                }

                this.minus(obj.find('.minutes'));
                this.addHourTrigger(obj);
             ;

        }.bind(this), 1000*60);
        },
        minus:function(obj){
            var bar = (obj.text() | 0) - 1
            obj.text(bar);
            return bar;
        }
    }


  


    $.fn.extend({
        timeTrigger: function(option) {
            //1 this 是单个
            //option参数
            // trigger 触发时分秒; s,m
            // time  时间;
            // limit (over  inadequate) 是否接受某个参数必须大于或小于当前时间
            // (0=underfined:没有限制)(1=over:大于当前时间)(-1=inadequate:小于当前时间);
            if (option.time === void 0) {
                alert('请输入时间');
                return false;
            }
              var G = Object.create(Grewer);
              G.init(option,this);

        }
    })


}());

$('#time').timeTrigger({
    time: '2018-09-9 15:12:00',
    trigger:'s',
});

 

转载于:https://www.cnblogs.com/Grewer/p/7183737.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值