• js 计算过去和未来的时间距离现在多少天?


    计算传入的任意一时间。计算出这个时间距离现在还有多少天!或者计算过去的时间距离现在已经过去了多少天!

    返回值有两种!

    1、负值 代表过去了多少天

    2、正值 代表距离设定的时间还有多少天

    说明:距离设定的莫一天并不包括(设定的那一天),如果需要,计算的结果加1就可以了!

    /*格式 getBeforeDate('2015,5,20') */
    /*
    * auth:120975587@qq.com
    * time:2015.5.6 9:45
    * ******************
    */
    function getBeforeDate(n){
        var now = new Date();
        var aftertime = new Date(n);
        var year = now.getFullYear();
        var mon= now.getMonth()+1;
        var day= now.getDate();
        var year_after = aftertime.getFullYear();
        var mon_after = aftertime.getMonth()+1;
        var day_after = aftertime.getDate();
        var chs = 0;
        //获取当月的天数
        function DayNumOfMonth(Year,Month)
        {
            return 32 - new Date(Year,Month-1,32).getDate();
        }
        if(aftertime.getTime() - now.getTime() < 0){
            var temp1 = day_after;
            var temp2 = mon_after;
            var temp3 = year_after;
            day_after = day;
            mon_after = mon;
            year_after = year;
            day = temp1;
            mon = temp2;
            year = temp3;
        }
        if(year == year_after){//不跨年
            if(mon == mon_after){//不跨年不跨月
                chs += day_after-day;
            }else{//不跨年跨月
                chs += DayNumOfMonth(year,mon)- day+1;//加上第一个不满的
                for(var i=1;i< mon_after-mon;i++){
                    chs += DayNumOfMonth(year,mon+i);
                }
                chs += day_after-1;//加上
            }    
        }else{//存在跨年
            chs += DayNumOfMonth(year,mon)- day+1;//加上开始年份不满的一个月
            for(var m=1;m<12-mon;m++){
                chs += DayNumOfMonth(year,mon+m);
            }
            for(var j=1;j < year_after-year;j++){
                if((year+j)%400 == 0 || (year+j)%4 == 0 && (year+j)%100 != 0){
                    chs += 366;
                }else{
                    chs += 365;
                }
            }
            for(var n=1;n <= mon_after;n++){
                chs += DayNumOfMonth(year_after,n);
            }
            chs += day_after-1;
        }
        if(aftertime.getTime() - now.getTime() < 0){
            return -chs;
        }else{
             return chs;
        }
    }

     以上函数亲测是基本正确!但是测试数据不是很多,如有问题方便留下言,以便校正!谢谢!

  • 相关阅读:
    Unity3D 事件
    Unity3D 动画回调方法
    Unity3D优化总结
    Unity3D 第一人称控制器 C#脚本
    TCP/IP与IETF的RFC
    linux内核调优参考
    nginx_tcp_proxy代理酸酸乳
    Gitlab+Jenkins实现自动部署
    inotifywait命令详解及安装
    yum无法安装nginx,报错内容为1:nginx-1.14.2-1.el7_4.ngx.x86_64: [Errno 5] [Errno 2] 没有那个文件或目录
  • 原文地址:https://www.cnblogs.com/shizhouyu/p/4493875.html
Copyright © 2020-2023  润新知