zoukankan      html  css  js  c++  java
  • js 判断日期是否节假日

    判断节假日 有阳历的日期 也有阴历的日期 所以要获得两个日期 加以判断

     这个只能用到 2020年 我发现 2021年开始 农历就不对劲了    所以 我最终的解决方案在 最下面 这个 做一个参考 

      1       $(function () {
      2 
      3         // 找到阴历 的 月 日
      4         var CalendarData=new Array(100);
      5         var madd=new Array(12);
      6        // var tgString="甲乙丙丁戊己庚辛壬癸";
      7        // var dzString="子丑寅卯辰巳午未申酉戌亥";
      8         var numString="一二三四五六七八九十";
      9         var monString="正二三四五六七八九十冬腊";
     10         var weekString="日一二三四五六";
     11       //  var sx="鼠牛虎兔龙蛇马羊猴鸡狗猪";
     12         var cYear,cMonth,cDay,TheDate;  //阴历年月日变量
     13         CalendarData = new Array(0xA4B,0x5164B,0x6A5,0x6D4,0x415B5,0x2B6,0x957,0x2092F,0x497,0x60C96,0xD4A,0xEA5,0x50DA9,0x5AD,0x2B6,0x3126E, 0x92E,0x7192D,0xC95,0xD4A,0x61B4A,0xB55,0x56A,0x4155B, 0x25D,0x92D,0x2192B,0xA95,0x71695,0x6CA,0xB55,0x50AB5,0x4DA,0xA5B,0x30A57,0x52B,0x8152A,0xE95,0x6AA,0x615AA,0xAB5,0x4B6,0x414AE,0xA57,0x526,0x31D26,0xD95,0x70B55,0x56A,0x96D,0x5095D,0x4AD,0xA4D,0x41A4D,0xD25,0x81AA5,0xB54,0xB6A,0x612DA,0x95B,0x49B,0x41497,0xA4B,0xA164B, 0x6A5,0x6D4,0x615B4,0xAB6,0x957,0x5092F,0x497,0x64B, 0x30D4A,0xEA5,0x80D65,0x5AC,0xAB6,0x5126D,0x92E,0xC96,0x41A95,0xD4A,0xDA5,0x20B55,0x56A,0x7155B,0x25D,0x92D,0x5192B,0xA95,0xB4A,0x416AA,0xAD5,0x90AB5,0x4BA,0xA5B, 0x60A57,0x52B,0xA93,0x40E95);
     14         madd[0]=0;
     15         madd[1]=31;
     16         madd[2]=59;
     17         madd[3]=90;
     18         madd[4]=120;
     19         madd[5]=151;
     20         madd[6]=181;
     21         madd[7]=212;
     22         madd[8]=243;
     23         madd[9]=273;
     24         madd[10]=304;
     25         madd[11]=334;
     26 
     27         function GetBit(m,n){
     28           return (m>>n)&1;
     29         }
     30         function e2c(){
     31           TheDate= (arguments.length!=3) ? new Date() : new Date(arguments[0],arguments[1],arguments[2]);
     32           var total,m,n,k;
     33           var isEnd=false;
     34           var tmp=TheDate.getYear();
     35           if(tmp<1900){
     36             tmp+=1900;
     37           }
     38           total=(tmp-1921)*365+Math.floor((tmp-1921)/4)+madd[TheDate.getMonth()]+TheDate.getDate()-38;
     39 
     40           if(TheDate.getYear()%4==0&&TheDate.getMonth()>1) {
     41             total++;
     42           }
     43           for(m=0;;m++){
     44             k=(CalendarData[m]<0xfff)?11:12;
     45             for(n=k;n>=0;n--){
     46               if(total<=29+GetBit(CalendarData[m],n)){
     47                 isEnd=true; break;
     48               }
     49               total=total-29-GetBit(CalendarData[m],n);
     50             }
     51             if(isEnd) break;
     52           }
     53           cYear=1921 + m;
     54           cMonth=k-n+1;
     55           cDay=total;
     56           if(k==12){
     57             if(cMonth==Math.floor(CalendarData[m]/0x10000)+1){
     58               cMonth=1-cMonth;
     59             }
     60             if(cMonth>Math.floor(CalendarData[m]/0x10000)+1){
     61               cMonth--;
     62             }
     63           }
     64         }
     65 
     66         function GetcDateString(){
     67           var tmp="";
     68           //tmp+=tgString.charAt((cYear-4)%10);
     69         //  tmp+=dzString.charAt((cYear-4)%12);
     70          // tmp+="(";
     71          // tmp+=sx.charAt((cYear-4)%12);
     72         //  tmp+=")年 ";
     73           if(cMonth<1){
     74           //  tmp+="(闰)";
     75             tmp+=monString.charAt(-cMonth-1);
     76           }else{
     77             tmp+=monString.charAt(cMonth-1);
     78           }
     79           tmp+="月";
     80           tmp+=(cDay<11)?"初":((cDay<20)?"十":((cDay<30)?"廿":"三十"));
     81           if (cDay%10!=0||cDay==10){
     82             tmp+=numString.charAt((cDay-1)%10);
     83           }
     84           return tmp;
     85         }
     86 
     87         function GetLunarDay(solarYear,solarMonth,solarDay){
     88 //solarYear = solarYear<1900?(1900+solarYear):solarYear;
     89           if(solarYear<1921 || solarYear>2222){
     90             return "";
     91           }else{
     92             solarMonth = (parseInt(solarMonth)>0) ? (solarMonth-1) : 11;
     93             e2c(solarYear,solarMonth,solarDay);
     94             return GetcDateString();
     95           }
     96         }
     97         //获取今天的阳历年月日
     98         //var D=new Date();
     99         var D= new Date(2021,1,11);
    100         var yy=D.getFullYear();
    101         var mm=D.getMonth()+1;
    102         var dd=D.getDate();
    103         var ww=D.getDay();
    104         var ss=parseInt(D.getTime() / 1000);
    105         if (yy<100) yy="19"+yy;
    106         //获取阴历的 月 日
    107         GetLunarDay(yy,mm,dd);
    108         var yMonth=""; //阴历 月份
    109         if(cMonth<1){
    110           yMonth=monString.charAt(-cMonth-1);
    111         }else{
    112           yMonth=monString.charAt(cMonth-1);
    113         }
    114         var yDay=""; //阴历 日期
    115         yDay+=(cDay<11)?"初":((cDay<20)?"十":((cDay<30)?"廿":"三十"));
    116         if (cDay%10!=0||cDay==10){
    117           yDay+=numString.charAt((cDay-1)%10);
    118         }
    119         console.log(D);
    120         console.log(mm+"-"+dd);
    121         console.log(yMonth+"-"+yDay);
    122       //  元旦 1天 1-1
    123         //  //;zhi (二)春节,除夕 到初六
    124         //  (三)清明节,放假1天(农历清明当日); 算不出来的
    125         //  (四)劳动节,放假1天(5月1日); 阳历 5-1
    126         //  (五)端午节,放假1天(农历端午当日);阴历五月五号
    127         //  (六)中秋节,放假1天(农历中秋当日);阴历八月15
    128         //  (七)国庆节,放假3天(10月1日、2日、3日)。阳历  10-1  -10-7
    129 
    130 
    131        if(mm=='1'&&dd=='1'){
    132          console.log("元旦");
    133        }else if(mm=='5'&&dd=='1'){
    134          console.log("劳动节");
    135        }else if(mm=='10'&&(dd=='1'||dd=='2'||dd=='3'||dd=='4'||dd=='5'||dd=='6'||dd=='7')){
    136          console.log("国庆节");
    137        }else if(mm=='五'&&dd=='初五'){
    138          console.log("端午节");
    139        }else if(mm=='八'&&dd=='十五'){
    140          console.log("中秋节");
    141        }else if(mm=='腊'&&dd=='三十'||mm=='一'&&(dd=='初一'||dd=='初二'||dd=='初三'||dd=='初四'||dd=='初五'||dd=='初六')){
    142          console.log("春节");
    143        }
    144 
    145 
    146       })
    147 
    148     

     上面那个只能用到 2020年尾

    我找了很多资料 但是没有找到  最终只能选择了使用api 查找

        $.ajaxSetup({
          async: false
        });
    
         $.ajax({
          url:'http://www.autmone.com/openapi/icalendar/queryDate?date=2021-02-03', //请求的URL
          timeout : 1000, //超时时间设置,单位毫秒
          type : 'get', //请求方式,get或post
          data :{}, //请求所传参数,json格式
          dataType:'json',//返回的数据格式
          success:function(data){ //请求成功的回调函数
            console.log(data.data.iMonthChinese);
            console.log(data.data.iDayChinese);
          },
           error:function(XMLHttpRequest, textStatus, errorThrown) {
             if(textStatus=="timeout"){
               console.log("加载超时,请重试");
             }else{
               console.log("出现异常");
             }
    
          }
         });
    
        $.ajaxSetup({
          async: true
        });

    又出现一个小问题  公司项目对于所有的 ajax请求做了一个附加参数 记录了 当前用户  这个参数导致我使用这个api查不到数据

    没办法 还得通过 controller 转一下 

      /**
         */
        @ResponseBody
        @RequestMapping(value = "/judgeTheDateAndHoliday")
        public ResponseVo getInjectionEfficiency(String date
            ) throws Exception {
    
            String string = "date="+date;
            
        
            String msg = "";
            String post = HttpUtils.post("http://www.autmone.com/openapi/icalendar/queryDate", string,1000);
            System.out.println(post);
    
            LnjectionYieldAchievementVo jsonToPojo = JsonUtil.jsonToPojo(post, LnjectionYieldAchievementVo.class);
            
            return ResultUtil.success(msg, jsonToPojo);
        }

    可以了 ...

    这个返回参数有繁体字的存在 要注意这个 

  • 相关阅读:
    Tor网络突破IP封锁,爬虫好搭档【入门手册】
    ubuntu python3相关
    toutiao url
    处理跨域请求
    Python使用虚拟环境
    Python删除文件,空文件夹,非空文件夹
    如何在jupyter中使用Python2和Python3
    推荐使用国内的豆瓣源安装Python插件
    Python数据库查询之组合条件查询-F&Q查询
    获取Django项目的全部url
  • 原文地址:https://www.cnblogs.com/Mr-Y1907/p/14292936.html
Copyright © 2011-2022 走看看