亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

中國農歷二百年算法及年歷程序分析二

2019-11-18 11:48:07
字體:
來源:轉載
供稿:網友

      // 注重:閏月 m < 0

      int index = y - baseChineseYear + baseIndex;

      int v = 0;

      int l = 0;

      int d = 30;

      if (1<=m && m<=8) {

         v = chineseMonths[2*index];

         l = m - 1;

         if ( ((v>>l)&0x01)==1 ) d = 29;

      } else if (9<=m && m<=12) {

         v = chineseMonths[2*index+1];

         l = m - 9;

         if ( ((v>>l)&0x01)==1 ) d = 29;

      } else {

         v = chineseMonths[2*index+1];

         v = (v>>4)&0x0F;

         if (v!=Math.abs(m)) {

            d = 0;

         } else {

            d = 29;

            for (int i=0; i

               if (bigLeapMonthYears[i]==index) {

                  d = 30;

                  break;

               }

            }

         }

      }

      return d;

   }

   public static int nextChineseMonth(int y, int m) {

      int n = Math.abs(m) + 1;

      if (m>0) {

         int index = y - baseChineseYear + baseIndex;

         int v = chineseMonths[2*index+1];

         v = (v>>4)&0x0F;

         if (v==m) n = -m;

      }

      if (n==13) n = 1;

      return n;

   }

   PRivate static char[][] sectionalTermMap = {

   {7,6,6,6,6,6,6,6,6,5,6,6,6,5,5,6,6,5,5,5,5,5,5,5,5,4,5,5},

   {5,4,5,5,5,4,4,5,5,4,4,4,4,4,4,4,4,3,4,4,4,3,3,4,4,3,3,3},

   {6,6,6,7,6,6,6,6,5,6,6,6,5,5,6,6,5,5,5,6,5,5,5,5,4,5,5,5,5},

   {5,5,6,6,5,5,5,6,5,5,5,5,4,5,5,5,4,4,5,5,4,4,4,5,4,4,4,4,5},

   {6,6,6,7,6,6,6,6,5,6,6,6,5,5,6,6,5,5,5,6,5,5,5,5,4,5,5,5,5},

   {6,6,7,7,6,6,6,7,6,6,6,6,5,6,6,6,5,5,6,6,5,5,5,6,5,5,5,5,4,5,5,5,5},

   {7,8,8,8,7,7,8,8,7,7,7,8,7,7,7,7,6,7,7,7,6,6,7,7,6,6,6,7,7},

   {8,8,8,9,8,8,8,8,7,8,8,8,7,7,8,8,7,7,7,8,7,7,7,7,6,7,7,7,6,6,7,7,7},

   {8,8,8,9,8,8,8,8,7,8,8,8,7,7,8,8,7,7,7,8,7,7,7,7,6,7,7,7,7},

   {9,9,9,9,8,9,9,9,8,8,9,9,8,8,8,9,8,8,8,8,7,8,8,8,7,7,8,8,8},

   {8,8,8,8,7,8,8,8,7,7,8,8,7,7,7,8,7,7,7,7,6,7,7,7,6,6,7,7,7},

   {7,8,8,8,7,7,8,8,7,7,7,8,7,7,7,7,6,7,7,7,6,6,7,7,6,6,6,7,7}

   };

   private static char[][] sectionalTermYear = {

   {13,49,85,117,149,185,201,250,250},

   {13,45,81,117,149,185,201,250,250},

   {13,48,84,112,148,184,200,201,250},

   {13,45,76,108,140,172,200,201,250},

   {13,44,72,104,132,168,200,201,250},

   {5 ,33,68,96 ,124,152,188,200,201},

   {29,57,85,120,148,176,200,201,250},

   {13,48,76,104,132,168,196,200,201},

   {25,60,88,120,148,184,200,201,250},

   {16,44,76,108,144,172,200,201,250},

   {28,60,92,124,160,192,200,201,250},

   {17,53,85,124,156,188,200,201,250}

   };

   private static char[][] principleTermMap = {

   {21,21,21,21,21,20,21,21,21,20,20,21,21,20,20,20,20,20,20,20,20,19,

      20,20,20,19,19,20},

   {20,19,19,20,20,19,19,19,19,19,19,19,19,18,19,19,19,18,18,19,19,18,

      18,18,18,18,18,18},

   {21,21,21,22,21,21,21,21,20,21,21,21,20,20,21,21,20,20,20,21,20,20,

      20,20,19,20,20,20,20},

   {20,21,21,21,20,20,21,21,20,20,20,21,20,20,20,20,19,20,20,20,19,19,

      20,20,19,19,19,20,20},

   {21,22,22,22,21,21,22,22,21,21,21,22,21,21,21,21,20,21,21,21,20,20,

      21,21,20,20,20,21,21},

   {22,22,22,22,21,22,22,22,21,21,22,22,21,21,21,22,21,21,21,21,20,21,

      21,21,20,20,21,21,21},

   {23,23,24,24,23,23,23,24,23,23,23,23,22,23,23,23,22,22,23,23,22,22,

      22,23,22,22,22,22,23},

   {23,24,24,24,23,23,24,24,23,23,23,24,23,23,23,23,22,23,23,23,22,22,

      23,23,22,22,22,23,23},

   {23,24,24,24,23,23,24,24,23,23,23,24,23,23,23,23,22,23,23,23,22,22,

      23,23,22,22,22,23,23},

   {24,24,24,24,23,24,24,24,23,23,24,24,23,23,23,24,23,23,23,23,22,23,

      23,23,22,22,23,23,23},

   {23,23,23,23,22,23,23,23,22,22,23,23,22,22,22,23,22,22,22,22,21,22,

      22,22,21,21,22,22,22},

   {22,22,23,23,22,22,22,23,22,22,22,22,21,22,22,22,21,21,22,22,21,21,

      21,22,21,21,21,21,22}

   };

   private static char[][] principleTermYear = {

   {13,45,81,113,149,185,201},

   {21,57,93,125,161,193,201},

   {21,56,88,120,152,188,200,201},

   {21,49,81,116,144,176,200,201},

   {17,49,77,112,140,168,200,201},

   {28,60,88,116,148,180,200,201},

   {25,53,84,112,144,172,200,201},

   {29,57,89,120,148,180,200,201},

   {17,45,73,108,140,168,200,201},

   {28,60,92,124,160,192,200,201},

   {16,44,80,112,148,180,200,201},

   {17,53,88,120,156,188,200,201}

   };

   public int computeSolarTerms() {

      if (gregorianYear<1901 gregorianYear>2100) return 1;

      sectionalTerm = sectionalTerm(gregorianYear, gregorianMonth);

      principleTerm = principleTerm(gregorianYear, gregorianMonth);

      return 0;

   }

   public static int sectionalTerm(int y, int m) {

      if (y<1901 y>2100) return 0;

      int index = 0;

      int ry = y-baseYear+1;

      while (ry>=sectionalTermYear[m-1][index]) index++;

      int term = sectionalTermMap[m-1][4*index+ry%4];

      if ((ry == 121)&&(m == 4)) term = 5;

      if ((ry == 132)&&(m == 4)) term = 5;

      if ((ry == 194)&&(m == 6)) term = 6;

      return term;

   }

   public static int principleTerm(int y, int m) {

      if (y<1901 y>2100) return 0;

      int index = 0;

      int ry = y-baseYear+1;

      while (ry>=principleTermYear[m-1][index]) index++;

      int term = principleTermMap[m-1][4*index+ry%4];

      if ((ry == 171)&&(m == 3)) term = 21;

      if ((ry == 181)&&(m == 5)) term = 21;

      return term;

   }

   public String toString() {

      StringBuffer buf = new StringBuffer();

      buf.append("Gregorian Year: "+gregorianYear+"/n");

      buf.append("Gregorian Month: "+gregorianMonth+"/n");

      buf.append("Gregorian Date: "+gregorianDate+"/n");

      buf.append("Is Leap Year: "+isGregorianLeap+"/n");

      buf.append("Day of Year: "+dayOfYear+"/n");

      buf.append("Day of Week: "+dayOfWeek+"/n");

      buf.append("Chinese Year: "+chineseYear+"/n");

      buf.append("Heavenly Stem: "+((chineseYear-1)%10)+"/n");

      buf.append("Earthly Branch: "+((chineseYear-1)%12)+"/n");

      buf.append("Chinese Month: "+chineseMonth+"/n");

      buf.append("Chinese Date: "+chineseDate+"/n");

      buf.append("Sectional Term: "+sectionalTerm+"/n");

      buf.append("Principle Term: "+principleTerm+"/n");

      return buf.toString();

   }

   public String[] getYearTable() {

      setGregorian(gregorianYear,1,1);

      computeChineseFields();

      computeSolarTerms();

      String[] table = new String[58]; // 6*9 + 4

      table[0] = getTextLine(27, "公歷年歷:"+gregorianYear);

      table[1] = getTextLine(27, "農歷年歷:"+(chineseYear+1)

         + " ("+stemNames[(chineseYear+1-1)%10]

         + branchNames[(chineseYear+1-1)%12]

         + " - "+animalNames[(chineseYear+1-1)%12]+"年)");

      int ln = 2;

      String blank  = "                                         "

              +"  " + "                                         ";

      String[] mLeft = null;

      String[] mRight = null;

      for (int i=1; i<=6; i++) {

         table[ln] = blank;

         ln++;

         mLeft = getMonthTable();

         mRight = getMonthTable();

         for (int j=0; j

            String line = mLeft[j] + "  " + mRight[j];

            table[ln] = line;

            ln++;

         }

      }

      table[ln] = blank;

      ln++;

      table[ln] = getTextLine(0,

         "##/## - 公歷日期/農歷日期,(*)#月 - (閏)農歷月第一天");

      ln++;

      return table;

   }

   public static String getTextLine(int s, String t) {

      String str  = "                                         "

              +"  " + "                                         ";

      if (t!=null && s

         str = str.substring(0,s) + t + str.substring(s+t.length());

      return str;

   }

   private static String[] monthNames =

      {"一","二","三","四","五","六","七","八","九","十","十一","十二"};

   public String[] getMonthTable() {

      setGregorian(gregorianYear,gregorianMonth,1);

      computeChineseFields();

      computeSolarTerms();

      String[] table = new String[8];

      String title  = null;

      if (gregorianMonth<11) title  = "                   ";

      else title  = "                 ";

      title = title + monthNames[gregorianMonth-1] + "月"

                    + "                   ";

      String header = "   日    一    二    三    四    五    六 ";

      String blank  = "                                          ";

      table[0] = title;

      table[1] = header;

      int wk = 2;

      String line = "";

      for (int i=1; i

         line += "     " + ' ';

      }

      int days = daysInGregorianMonth(gregorianYear,gregorianMonth);

      for (int i=gregorianDate; i<=days; i++) {

         line += getDateString() + ' ';

         rollUpOneDay();

         if (dayOfWeek==1) {

            table[wk] = line;

            line = "";

            wk++;

         }

      }

      for (int i=dayOfWeek; i<=7; i++) {

         line += "     " + ' ';

      }

      table[wk] = line;

      for (int i=wk+1; i

         table[i] = blank;

      }

      for (int i=0; i

         table[i] = table[i].substring(0,table[i].length()-1);

      }

 

      return table;

   }

   private static String[] chineseMonthNames =

      {"正","二","三","四","五","六","七","八","九","十","冬","臘"};

   private static String[] principleTermNames =

      {"雨水","春分","谷雨","夏滿","夏至","大暑","處暑","秋分","霜降",

       "小雪","冬至","大寒"};

   private static String[] sectionalTermNames =

      {"立春","驚蟄","清明","立夏","芒種","小暑","立秋","白露","寒露",

       "立冬","大雪","小寒"};

   public String getDateString() {

      String str = "*  /  ";

      String gm = String.valueOf(gregorianMonth);

      if (gm.length()==1) gm = ' ' + gm;

      String cm = String.valueOf(Math.abs(chineseMonth));

      if (cm.length()==1) cm = ' ' + cm;

      String gd = String.valueOf(gregorianDate);

      if (gd.length()==1) gd = ' ' + gd;

      String cd = String.valueOf(chineseDate);

      if (cd.length()==1) cd = ' ' + cd;

      if (gregorianDate==sectionalTerm) {

         str = " "+sectionalTermNames[gregorianMonth-1];

      } else if (gregorianDate==principleTerm) {

         str = " "+principleTermNames[gregorianMonth-1];

      } else if (chineseDate==1 && chineseMonth>0) {

           str = " "+chineseMonthNames[chineseMonth-1]+"月";

      } else if (chineseDate==1 && chineseMonth<0) {

           str = "*"+chineseMonthNames[-chineseMonth-1]+"月";

      } else {

           str = gd+'/'+cd;

      }

      return str;

   }

   public int rollUpOneDay() {

      dayOfWeek = dayOfWeek%7 + 1;

      dayOfYear++;

      gregorianDate++;

      int days = daysInGregorianMonth(gregorianYear,gregorianMonth);

      if (gregorianDate>days) {

         gregorianDate = 1;

         gregorianMonth++;

         if (gregorianMonth>12) {

            gregorianMonth = 1;

            gregorianYear++;

            dayOfYear = 1;

            isGregorianLeap = isGregorianLeapYear(gregorianYear);

         }

         sectionalTerm = sectionalTerm(gregorianYear,gregorianMonth);

         principleTerm = principleTerm(gregorianYear,gregorianMonth);

      }

      chineseDate++;

      days = daysInChineseMonth(chineseYear,chineseMonth);

      if (chineseDate>days) {

         chineseDate = 1;

         chineseMonth = nextChineseMonth(chineseYear,chineseMonth);

         if (chineseMonth==1) chineseYear++;

      }

      return 0;

   }

}

[/Html]



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级黄色网| 日韩免费观看在线观看| 日韩激情av在线免费观看| 精品国产一区二区三区久久久狼| 日韩成人久久久| 欧洲一区二区视频| 欧洲精品在线视频| yellow中文字幕久久| 成人妇女免费播放久久久| 亚洲精品中文字| 2019精品视频| 色阁综合伊人av| 亚洲福利在线观看| 中文字幕亚洲一区| 久久精品国产一区| 日本高清不卡的在线| 亚洲天堂第一页| 亚洲国产精品一区二区久| 最近2019中文免费高清视频观看www99| 国产亚洲精品va在线观看| 538国产精品一区二区免费视频| 日韩免费中文字幕| 91精品视频播放| 3344国产精品免费看| 国产一区av在线| 亚洲一区精品电影| 亚洲精品日产aⅴ| 亚洲人午夜精品免费| 综合国产在线视频| 日韩精品在线电影| 一本色道久久综合亚洲精品小说| 日韩中文在线不卡| 久久久极品av| 精品偷拍各种wc美女嘘嘘| 日韩欧美国产中文字幕| 成人夜晚看av| 午夜精品一区二区三区在线| 欧美激情二区三区| 91在线无精精品一区二区| 国产精品aaaa| 亚洲日韩第一页| 欧美另类精品xxxx孕妇| 国产成人精品久久二区二区| 亚洲国产私拍精品国模在线观看| 国产日韩欧美影视| 91在线网站视频| 国产精品爽黄69天堂a| 91亚洲精品久久久久久久久久久久| 国产在线精品一区免费香蕉| 亚洲欧美日本伦理| 国产男人精品视频| 亚洲精品国产精品国产自| 国内免费精品永久在线视频| 亚洲另类图片色| 久久99精品国产99久久6尤物| 亚洲天堂男人天堂女人天堂| 亚洲精品乱码久久久久久按摩观| 久久久久久久久电影| 日本国产一区二区三区| 欧美国产第一页| 91深夜福利视频| 欧美巨大黑人极品精男| 久久久久久国产精品三级玉女聊斋| 国内精品久久久久影院 日本资源| 国产精品永久免费观看| 98精品国产高清在线xxxx天堂| 日韩av手机在线观看| 欧美理论电影网| 久久久中精品2020中文| 久久999免费视频| 中文字幕在线观看日韩| 亚洲视频综合网| 日韩av成人在线| 午夜精品久久久久久久白皮肤| 一区二区福利视频| 亚洲综合在线中文字幕| 国产精品久在线观看| 黑人巨大精品欧美一区二区| 精品偷拍一区二区三区在线看| 欧美裸体xxxx极品少妇软件| 久久久久国产精品免费网站| 亚洲精品国产精品久久清纯直播| 国产精品黄色av| 久久久久久伊人| 欧美精品videofree1080p| 日韩风俗一区 二区| 日韩动漫免费观看电视剧高清| 日本不卡高字幕在线2019| 日韩毛片中文字幕| 久久色精品视频| 日韩电影中文字幕在线| 美女黄色丝袜一区| 久久久99免费视频| 亚洲天堂免费在线| 欧美激情一二三| 国产欧美精品在线| 欧洲精品久久久| 久久国产精品久久久久久久久久| 亚洲一区二区少妇| 欧美亚洲国产精品| 美女av一区二区三区| 日本一区二区在线播放| 日韩免费观看网站| 操91在线视频| 亚洲美女av在线播放| 午夜欧美大片免费观看| 欧美xxxx18国产| 色综合色综合网色综合| 亚洲精品视频二区| 久久中文久久字幕| 岛国精品视频在线播放| 伊人久久久久久久久久久久久| 久久久999精品免费| 97色在线播放视频| 日韩女优人人人人射在线视频| 国产一区二区三区丝袜| 成人xxxx视频| 91久久精品日日躁夜夜躁国产| 欧美极品少妇xxxxⅹ喷水| 国产精品视频免费在线观看| 久久精品国产久精国产一老狼| 欧美一级电影久久| 久久精品国亚洲| 日本精品久久久| 日韩欧美精品免费在线| 久久久久99精品久久久久| 亚洲自拍高清视频网站| 日韩三级成人av网| 欧美黄色www| 成人字幕网zmw| 久久国产一区二区三区| 国产精品成人观看视频国产奇米| 亚洲欧洲成视频免费观看| 欧美日本高清一区| 亚洲韩国欧洲国产日产av| 66m—66摸成人免费视频| 日本久久久久久久久久久| 亚洲国产日韩欧美在线动漫| 午夜精品免费视频| 欧美一区二区三区精品电影| xx视频.9999.com| 欧美一区视频在线| 少妇高潮 亚洲精品| 亚洲精品色婷婷福利天堂| 亚洲电影av在线| 97色在线视频观看| 久久久91精品国产一区不卡| 日韩欧美aⅴ综合网站发布| 成人av在线亚洲| 精品国偷自产在线| 国产精品一区二区久久精品| 久久人人爽人人爽人人片av高请| 色偷偷av一区二区三区乱| 国产精品中文字幕久久久| 狠狠躁夜夜躁人人躁婷婷91| 亚洲美女激情视频| 深夜精品寂寞黄网站在线观看| 日韩小视频在线观看| 精品久久久久久国产91| 九九热最新视频//这里只有精品| 欧美国产日韩xxxxx| 成人激情视频小说免费下载| 日韩成人免费视频| 欧美激情一区二区久久久|