zoukankan      html  css  js  c++  java
  • 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;
        }
    }

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

  • 相关阅读:
    《当程序员的那些狗日日子》(二十六)再下决心
    创建本地数据库
    Servlet的开发和使用
    tomcat7不能创建解决办法
    windows系统纯净版下载
    Linux打包命令
    Filter的开发和使用
    C语言地址传递和值传递简析
    Servlet生命周期
    Java EE架构
  • 原文地址:https://www.cnblogs.com/shizhouyu/p/4493875.html
Copyright © 2011-2022 走看看