载入中,请稍候……

公农历转换类[C++]

Admin 于 2008-10-26 17:39:09 发表.NET

订阅: http://www.miniboke.com/Feed/Article_82.aspx
引用: http://www.miniboke.com/Trackback/BVKvWvTWAqabOkRupgHI.aspx (UTF-8)
远程进程DLL注入 < 公农历转换类[C++] > Java程序中调用sun包会影响可移植性

头文件:

  1. //xDate.h 
  2. /************************************************************************************************************ 
  3.                Author  :xShandow 
  4.          Dest    :A Date Class For C++ 
  5.          Email   :chenzg@hftd.com 
  6.          HomePage:http://www.hftd.com 
  7.          Dev Env :Visual C++6.0 
  8.          OS.     :Windows 2000 Professinal 
  9.          Date    :2003-NOV-15 
  10.  ************************************************************************************************************/ 
  11. #ifndef XDATE_H 
  12. #define XDATE_H  
  13.  
  14. #include <windows.h> 
  15. extern const WORD START_YEAR; 
  16. extern const WORD END_YEAR ; 
  17.  
  18. class xDate 
  19. private
  20.    WORD    m_iYear, m_iMonth, m_iDay; 
  21.    void    l_InitData(); 
  22.    //计算从1901年1月1日过iSpanDays天后的阴历日期    
  23.    static void   l_CalcLunarDate(WORD &iYear, WORD &iMonth ,WORD &iDay,LONG iSpanDays); 
  24.    //计算公历iYear年iMonth月iDay日对应的节气 0-24,0表不是节气 
  25.    static WORD   l_GetLunarHolDay(WORD iYear, WORD iMonth, WORD iDay); 
  26. public:  
  27.    //=====================================================================================// 
  28.    xDate(WORD iYear, WORD iMonth, WORD iDay);  
  29.    xDate(); 
  30.    //=====================================================================================// 
  31.  
  32.    WORD GetYear(){return m_iYear;}  
  33.    WORD GetMonth(){return m_iMonth;} 
  34.    WORD GetDay(){return m_iDay;}  
  35.     
  36.    //=====================================================================================// 
  37.    void GetDate(WORD &iYear, WORD &iMonth, WORD &iDay);  
  38.    BOOL SetDate(WORD iYear , WORD iMonth , WORD iDay); 
  39.    //=====================================================================================// 
  40.    //判断iYear是不是闰年  
  41.     static BOOL IsLeapYear(WORD iYear)  {return !(iYear%4)&&(iYear%100) || !(iYear%400);}  
  42.     
  43.    //计算iYear,iMonth,iDay对应是星期几 1年1月1日 --- 65535年12月31日  
  44.    static WORD WeekDay(WORD iYear, WORD iMonth, WORD iDay); 
  45.     
  46.    //返回iYear年iMonth月的天数 1年1月 --- 65535年12月  
  47.    static WORD MonthDays(WORD iYear, WORD iMonth);  
  48.     
  49.    //返回阴历iLunarYer年阴历iLunarMonth月的天数,如果iLunarMonth为闰月, 
  50.    //高字为第二个iLunarMonth月的天数,否则高字为0  
  51.    // 1901年1月---2050年12月  
  52.    static LONG LunarMonthDays(WORD iLunarYear, WORD iLunarMonth);  
  53.     
  54.    //返回阴历iLunarYear年的总天数 
  55.    // 1901年1月---2050年12月  
  56.    static WORD LunarYearDays(WORD iLunarYear);  
  57.     
  58.    //返回阴历iLunarYear年的闰月月份,如没有返回0  
  59.    // 1901年1月---2050年12月 
  60.    static WORD GetLeapMonth(WORD iLunarYear);  
  61.     
  62.    //把iYear年格式化成天干记年法表示的字符串  
  63.    static void FormatLunarYear(WORD  iYear, char *pBuffer);  
  64.  
  65.    //把iMonth格式化成中文字符串  
  66.    static void FormatMonth(WORD iMonth, char *pBuffer, BOOL bLunar = TRUE);  
  67.     
  68.    //把iDay格式化成中文字符串  
  69.    static void FormatLunarDay(WORD  iDay, char *pBuffer); 
  70.     
  71.    //计算公历两个日期间相差的天数  1年1月1日 --- 65535年12月31日  
  72.    static LONG CalcDateDiff(WORD iEndYear, WORD iEndMonth, WORD iEndDay,WORD iStartYear = START_YEAR,WORD iStartMonth =1, WORD iStartDay =1);  
  73.     
  74.    //计算公历iYear年iMonth月iDay日对应的阴历日期,返回对应的阴历节气 0-24 
  75.    //1901年1月1日---2050年12月31日  
  76.    static WORD GetLunarDate(WORD iYear, WORD iMonth, WORD iDay,WORD &iLunarYear, WORD &iLunarMonth, WORD &iLunarDay); 
  77. };  
  78.  
  79. #endif //XDATE_H  

类实现:

  1. //xDate.cpp 
  2. #include "xDate.h"  
  3. //#include <windows.h> 
  4.  
  5.  
  6. extern WORD gLunarMonthDay[];  
  7. extern BYTE gLunarMonth[];  
  8. extern BYTE gLunarHolDay[];  
  9.  
  10. const  WORD START_YEAR =1901;  
  11. const  WORD END_YEAR   =2050;  
  12. //===========================================================================// 
  13. void xDate::l_InitData()  
  14. {  
  15.    SYSTEMTIME systime;  
  16.    ::GetSystemTime(&systime);  
  17.     
  18.    m_iYear  = systime.wYear;  
  19.    m_iMonth = systime.wMonth;  
  20.    m_iDay   = systime.wDay;  
  21. }  
  22. //===========================================================================// 
  23. xDate::xDate(WORD iYear, WORD iMonth, WORD iDay)  
  24. {  
  25.    if(!SetDate(iYear, iMonth, iDay))  
  26.       l_InitData();  
  27. }  
  28. //===========================================================================// 
  29. xDate::xDate()  
  30. {  
  31.    l_InitData();  
  32. }  
  33. //===========================================================================// 
  34. LONG xDate::CalcDateDiff(WORD iEndYear, WORD iEndMonth, WORD iEndDay,WORD  iStartYear, WORD iStartMonth, WORD iStartDay)  
  35. {  
  36.    WORD monthday[]={0, 31, 59 ,90, 120, 151, 181, 212, 243, 273, 304, 334};  
  37.    //计算两个年份1月1日之间相差的天数  
  38.    LONG iDiffDays =(iEndYear - iStartYear)*365;  
  39.    iDiffDays += (iEndYear-1)/4 - (iStartYear-1)/4;  
  40.    iDiffDays -= ((iEndYear-1)/100 - (iStartYear-1)/100);  
  41.    iDiffDays += (iEndYear-1)/400 - (iStartYear-1)/400;  
  42.    //加上iEndYear年1月1日到iEndMonth月iEndDay日之间的天数  
  43.    iDiffDays += monthday[iEndMonth-1] +  
  44.       (IsLeapYear(iEndYear)&&iEndMonth>2? 1: 0);  
  45.    iDiffDays += iEndDay;  
  46.    //减去iStartYear年1月1日到iStartMonth月iStartDay日之间的天数  
  47.    iDiffDays -= (monthday[iStartMonth-1] +(IsLeapYear(iStartYear)&&iStartMonth>2 ? 1: 0));  
  48.    iDiffDays -= iStartDay;  
  49.    return iDiffDays;  
  50. }  
  51. //===========================================================================// 
  52. void  xDate::l_CalcLunarDate(WORD &iYear, WORD &iMonth ,WORD &iDay, LONG iSpanDays)  
  53. {  
  54.    //阳历1901年2月19日为阴历1901年正月初一  
  55.    //阳历1901年1月1日到2月19日共有49天  
  56.    if(iSpanDays <49) 
  57.    { 
  58.       iYear = START_YEAR-1; 
  59.       if(iSpanDays <19) 
  60.       { 
  61.          iMonth = 11; 
  62.          iDay = 11+WORD(iSpanDays); 
  63.       } 
  64.       else 
  65.       { 
  66.          iMonth = 12; 
  67.          iDay = WORD(iSpanDays) -18; 
  68.       } 
  69.       return ; 
  70.    } 
  71.    //下面从阴历1901年正月初一算起 
  72.    iSpanDays -=49; 
  73.    iYear = START_YEAR; 
  74.    iMonth = 1; 
  75.    iDay = 1; 
  76.    //计算年 
  77.    LONG tmp = LunarYearDays(iYear); 
  78.    while(iSpanDays >= tmp)  
  79.    {  
  80.       iSpanDays -= tmp;  
  81.       tmp = LunarYearDays(++iYear);  
  82.    }  
  83.    //计算月  
  84.    tmp = LOWORD(LunarMonthDays(iYear, iMonth));  
  85.    while(iSpanDays >= tmp)  
  86.    {  
  87.       iSpanDays -= tmp;  
  88.       if(iMonth == GetLeapMonth(iYear))  
  89.       {  
  90.          tmp  = HIWORD(LunarMonthDays(iYear, iMonth));  
  91.          if(iSpanDays < tmp) 
  92.             break
  93.          iSpanDays -= tmp; 
  94.       } 
  95.       tmp = LOWORD(LunarMonthDays(iYear, ++iMonth)); 
  96.    } 
  97.    //计算日 
  98.    iDay += WORD(iSpanDays); 
  99. //===========================================================================// 
  100. WORD xDate::GetLunarDate(WORD iYear, WORD iMonth, WORD iDay,WORD &iLunarYear, WORD &iLunarMonth, WORD &iLunarDay) 
  101.    l_CalcLunarDate(iLunarYear, iLunarMonth, iLunarDay,CalcDateDiff(iYear, iMonth, iDay)); 
  102.    return l_GetLunarHolDay(iYear, iMonth, iDay); 
  103. //===========================================================================// 
  104. //根据节气数据存储格式,计算阳历iYear年iMonth月iDay日对应的节气, 
  105. WORD xDate::l_GetLunarHolDay(WORD iYear, WORD iMonth, WORD iDay) 
  106.  
  107.  
  108.    BYTE &flag = gLunarHolDay[(iYear - START_YEAR)*12+iMonth -1]; 
  109.    WORD day; 
  110.    if(iDay <15) 
  111.       day= 15 - ((flag>>4)&0x0f);  
  112.    else  
  113.       day = ((flag)&0x0f)+15;  
  114.    if(iDay == day)  
  115.       return (iMonth-1) *2 + (iDay>15? 1: 0) +1;  
  116.    else  
  117.       return 0;  
  118. }  
  119. //===========================================================================// 
  120. void xDate::GetDate(WORD &iYear, WORD &iMonth, WORD &iDay)  
  121. {  
  122.    iYear  = m_iYear;  
  123.    iMonth = m_iMonth;  
  124.    iDay   = m_iDay;  
  125. }  
  126. //===========================================================================// 
  127. BOOL xDate::SetDate(WORD iYear, WORD iMonth, WORD iDay)  
  128. {  
  129.    if(iYear < START_YEAR || iYear > END_YEAR || iMonth <1 || iMonth >12)  
  130.       return FALSE;  
  131.     
  132.    if(iDay <1 || iDay > MonthDays(iYear, iMonth))  
  133.       return FALSE;  
  134.     
  135.    m_iYear   = iYear;  
  136.    m_iMonth  = iMonth;  
  137.    m_iDay    = iDay;  
  138.     
  139.    return TRUE;  
  140. }  
  141. //===========================================================================// 
  142. WORD xDate::WeekDay(WORD iYear, WORD iMonth, WORD iDay)  
  143. {  
  144.    //数组元素monthday[i]表示第i个月以前的总天数除以7的余数  
  145.    WORD monthday[]={0,3,3,6,1,4,6,2,5,0,3,5};  
  146.    WORD iDays = (iYear-1)%7 + (iYear-1)/4 - (iYear-1)/100 +(iYear-1)/400;  
  147.    iDays += (monthday[iMonth-1] +iDay) ;  
  148.    //如果iYear是闰年  
  149.    if(IsLeapYear(iYear) && iMonth>2)  
  150.       iDays++;  
  151.    //返回:0,1,2,3,4,5,6表日、一、二、三、四、五、六  
  152.    return iDays%7;  
  153. }  
  154. //===========================================================================// 
  155. WORD xDate::MonthDays(WORD iYear, WORD iMonth)  
  156. {  
  157.    switch(iMonth)  
  158.    {  
  159.    case 1: //一  (月) 
  160.    case 3: //三  (月) 
  161.    case 5: //五  (月) 
  162.    case 7: //七  (月) 
  163.    case 8: //八  (月) 
  164.    case 10://十  (月) 
  165.    case 12://十二(月) 
  166.       return 31;  
  167.  
  168.    case 4: //四  (月) 
  169.    case 6: //六  (月) 
  170.    case 9: //九  (月) 
  171.    case 11://十一(月)  
  172.       return 30;  
  173.  
  174.    case 2: //二  (月) 
  175.       //如果是闰年  
  176.       if(IsLeapYear(iYear))  
  177.          return 29;  
  178.       else  
  179.          return 28;  
  180.         
  181.    }  
  182.    return 0;  
  183. }  
  184. //===========================================================================// 
  185. WORD xDate::GetLeapMonth(WORD iLunarYear)  
  186. {  
  187.    BYTE &flag = gLunarMonth[(iLunarYear - START_YEAR)/2];  
  188.    return  (iLunarYear - START_YEAR)%2 ? flag&0x0f : flag>>4;  
  189. }  
  190. //===========================================================================// 
  191. LONG xDate::LunarMonthDays(WORD iLunarYear, WORD iLunarMonth)  
  192. {  
  193.    if(iLunarYear < START_YEAR) 
  194.       return 30L; 
  195.     
  196.    WORD height =0 ,low =29; 
  197.    int iBit = 16 - iLunarMonth; 
  198.     
  199.    if(iLunarMonth > GetLeapMonth(iLunarYear) && GetLeapMonth(iLunarYear))  
  200.       iBit --;  
  201.     
  202.    if(gLunarMonthDay[iLunarYear - START_YEAR] & (1<<iBit)) 
  203.       low ++; 
  204.     
  205.    if(iLunarMonth == GetLeapMonth(iLunarYear)) 
  206.       if(gLunarMonthDay[iLunarYear - START_YEAR] & (1<< (iBit -1))) 
  207.          height =30; 
  208.       else 
  209.          height =29; 
  210.        
  211.       return MAKELONG(low, height); 
  212. //===========================================================================// 
  213. WORD xDate::LunarYearDays(WORD iLunarYear) 
  214. /* 
  215.    WORD days=348 ; //12*29 
  216.    int month = 12 ; 
  217.     
  218.    //如果iYear年有闰月,则为13个月 
  219.    if(gLanarMonth[iYear - START_YEAR]) 
  220.       month ++; 
  221.  
  222.    //如果某月是三十天则days++ 
  223.    while(month >=0 && (gLanarMonthDay[iYear - START_YEAR] & (1 << (16 - month)))) 
  224.    { 
  225.       days ++; 
  226.       month --; 
  227.    } 
  228.    return days; 
  229. */ 
  230.    WORD days =0; 
  231.    for(WORD i=1; i<=12; i++) 
  232.    { 
  233.       LONG tmp = LunarMonthDays(iLunarYear ,i); 
  234.       days += HIWORD(tmp); 
  235.       days += LOWORD(tmp); 
  236.    } 
  237.    return days; 
  238. //===========================================================================// 
  239. void xDate::FormatLunarYear(WORD iYear, char *pBuffer) 
  240.    char szText1[]="甲乙丙丁戊己庚辛壬癸"
  241.    char szText2[]="子丑寅卯辰巳午未申酉戌亥"
  242.    char szText3[]="鼠牛虎免龙蛇马羊猴鸡狗猪"
  243.     
  244.    memcpy(pBuffer  ,szText1+((iYear-4)%10)*2,2); 
  245.    memcpy(pBuffer+2,szText2+((iYear-4)%12)*2,2); 
  246.    pBuffer[4]=' '
  247.    memcpy(pBuffer+5,szText3+((iYear-4)%12)*2,2); 
  248.    strcpy(pBuffer+7,"年"); 
  249. //===========================================================================// 
  250. void xDate::FormatMonth(WORD iMonth, char *pBuffer, BOOL bLunar) 
  251.  
  252.    if(!bLunar && iMonth==1) 
  253.    { 
  254.       strcpy(pBuffer, " 一月"); 
  255.       return
  256.    } 
  257.    char szText[]="正二三四五六七八九十"
  258.    if(iMonth<=10) 
  259.    { 
  260.       memcpy(pBuffer  ," ", 2); 
  261.       memcpy(pBuffer+2, szText + (iMonth -1)*2, 2); 
  262.       strcpy(pBuffer+4, "月"); 
  263.       return
  264.    } 
  265.    if (iMonth == 11) 
  266.       strcpy(pBuffer, "十一"); 
  267.    else 
  268.       strcpy(pBuffer, "十二"); 
  269.    strcpy(pBuffer+4  , "月"); 
  270.     
  271.     
  272. //===========================================================================// 
  273. void xDate::FormatLunarDay(WORD iDay, char *pBuffer) 
  274.    char szText1[]="初十廿三"
  275.    char szText2[]="一二三四五六七八九十"
  276.    if(iDay != 20 && iDay !=30) 
  277.    { 
  278.       memcpy(pBuffer  , szText1 + (iDay-1)/10*2   ,2); 
  279.       memcpy(pBuffer+2, szText2 + ((iDay-1)%10)*2 ,2); 
  280.       pBuffer[4]='\0'
  281.    } 
  282.    else 
  283.    { 
  284.       memcpy(pBuffer  , szText1 + iDay/10*2, 2); 
  285.       strcpy(pBuffer+2, szText2 +18); 
  286.    } 
  287.  
  288.   
  289. /******************************************************************************  
  290. 下面为阴历计算所需的数据,为节省存储空间,所以采用下面比较变态的存储方法.  
  291. *******************************************************************************/  
  292. //数组gLunarDay存入阴历1901年到2100年每年中的月天数信息,  
  293. //阴历每月只能是29或30天,一年用12(或13)个二进制位表示,对应位为1表30天,否则为29天  
  294. WORD gLunarMonthDay[]=  
  295. {  
  296.    //测试数据只有1901.1.1 --2050.12.31  
  297.    0X4ae0, 0Xa570, 0X5268, 0Xd260, 0Xd950, 0X6aa8, 0X56a0, 0X9ad0, 0X4ae8, 0X4ae0,   //1910  
  298.    0Xa4d8, 0Xa4d0, 0Xd250, 0Xd548, 0Xb550, 0X56a0, 0X96d0, 0X95b0, 0X49b8, 0X49b0,   //1920  
  299.    0Xa4b0, 0Xb258, 0X6a50, 0X6d40, 0Xada8, 0X2b60, 0X9570, 0X4978, 0X4970, 0X64b0,   //1930  
  300.    0Xd4a0, 0Xea50, 0X6d48, 0X5ad0, 0X2b60, 0X9370, 0X92e0, 0Xc968, 0Xc950, 0Xd4a0,   //1940  
  301.    0Xda50, 0Xb550, 0X56a0, 0Xaad8, 0X25d0, 0X92d0, 0Xc958, 0Xa950, 0Xb4a8, 0X6ca0,   //1950  
  302.    0Xb550, 0X55a8, 0X4da0, 0Xa5b0, 0X52b8, 0X52b0, 0Xa950, 0Xe950, 0X6aa0, 0Xad50,   //1960  
  303.    0Xab50, 0X4b60, 0Xa570, 0Xa570, 0X5260, 0Xe930, 0Xd950, 0X5aa8, 0X56a0, 0X96d0,   //1970  
  304.    0X4ae8, 0X4ad0, 0Xa4d0, 0Xd268, 0Xd250, 0Xd528, 0Xb540, 0Xb6a0, 0X96d0, 0X95b0,   //1980  
  305.    0X49b0, 0Xa4b8, 0Xa4b0, 0Xb258, 0X6a50, 0X6d40, 0Xada0, 0Xab60, 0X9370, 0X4978,   //1990  
  306.    0X4970, 0X64b0, 0X6a50, 0Xea50, 0X6b28, 0X5ac0, 0Xab60, 0X9368, 0X92e0, 0Xc960,   //2000  
  307.    0Xd4a8, 0Xd4a0, 0Xda50, 0X5aa8, 0X56a0, 0Xaad8, 0X25d0, 0X92d0, 0Xc958, 0Xa950,   //2010  
  308.    0Xb4a0, 0Xb550, 0Xb550, 0X55a8, 0X4ba0, 0Xa5b0, 0X52b8, 0X52b0, 0Xa930, 0X74a8,   //2020  
  309.    0X6aa0, 0Xad50, 0X4da8, 0X4b60, 0X9570, 0Xa4e0, 0Xd260, 0Xe930, 0Xd530, 0X5aa0,   //2030  
  310.    0X6b50, 0X96d0, 0X4ae8, 0X4ad0, 0Xa4d0, 0Xd258, 0Xd250, 0Xd520, 0Xdaa0, 0Xb5a0,   //2040  
  311.    0X56d0, 0X4ad8, 0X49b0, 0Xa4b8, 0Xa4b0, 0Xaa50, 0Xb528, 0X6d20, 0Xada0, 0X55b0,   //2050  
  312.        
  313. };  
  314.  
  315. //数组gLanarMonth存放阴历1901年到2050年闰月的月份,如没有则为0,每字节存两年  
  316. BYTE  gLunarMonth[]=  
  317. {  
  318.    0X00, 0X50, 0X04, 0X00, 0X20,   //1910  
  319.    0X60, 0X05, 0X00, 0X20, 0X70,   //1920  
  320.    0X05, 0X00, 0X40, 0X02, 0X06,   //1930  
  321.    0X00, 0X50, 0X03, 0X07, 0X00,   //1940  
  322.    0X60, 0X04, 0X00, 0X20, 0X70,   //1950  
  323.    0X05, 0X00, 0X30, 0X80, 0X06,   //1960  
  324.    0X00, 0X40, 0X03, 0X07, 0X00,   //1970  
  325.    0X50, 0X04, 0X08, 0X00, 0X60,   //1980  
  326.    0X04, 0X0a, 0X00, 0X60, 0X05,   //1990  
  327.    0X00, 0X30, 0X80, 0X05, 0X00,   //2000  
  328.    0X40, 0X02, 0X07, 0X00, 0X50,   //2010  
  329.    0X04, 0X09, 0X00, 0X60, 0X04,   //2020  
  330.    0X00, 0X20, 0X60, 0X05, 0X00,   //2030  
  331.    0X30, 0Xb0, 0X06, 0X00, 0X50,   //2040  
  332.    0X02, 0X07, 0X00, 0X50, 0X03    //2050  
  333. };  
  334.  
  335. //数组gLanarHoliDay存放每年的二十四节气对应的阳历日期  
  336. //每年的二十四节气对应的阳历日期几乎固定,平均分布于十二个月中  
  337. //   1月          2月         3月         4月         5月         6月  
  338. //小寒 大寒   立春  雨水   惊蛰 春分   清明 谷雨   立夏 小满   芒种 夏至  
  339. //   7月          8月         9月         10月       11月        12月  
  340. //小暑 大暑   立秋  处暑   白露 秋分   寒露 霜降   立冬 小雪   大雪 冬至  
  341. /*********************************************************************************  
  342. 节气无任何确定规律,所以只好存表,要节省空间,所以....  
  343. 下面这种存法实在是太变态了,你就将就着看吧  
  344. **********************************************************************************/  
  345. //数据格式说明:  
  346. //如1901年的节气为  
  347. //  1月     2月     3月   4月    5月   6月   7月    8月   9月    10月  11月     12月  
  348. // 6, 21, 4, 19,  6, 21, 5, 21, 6,22, 6,22, 8, 23, 8, 24, 8, 24, 8, 24 , 8, 23, 8, 22  
  349. // 9, 6,  11,4,   9, 6,  10,6,  9,7,  9,7,  7, 8,  7, 9,  7,  9, 7,  9, 7,  8, 7, 15  
  350. //上面第一行数据为每月节气对应日期,15减去每月第一个节气,每月第二个节气减去15得第二行  
  351. // 这样每月两个节气对应数据都小于16,每月用一个字节存放,高位存放第一个节气数据,低位存放  
  352. //第二个节气的数据,可得下表  
  353.  
  354. BYTE gLunarHolDay[]=  
  355. {  
  356.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1901  
  357.       0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1902  
  358.       0X96, 0XA5, 0X87, 0X96, 0X87, 0X87, 0X79, 0X69, 0X69, 0X69, 0X78, 0X78,   //1903  
  359.       0X86, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X78, 0X87,   //1904  
  360.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1905  
  361.       0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1906  
  362.       0X96, 0XA5, 0X87, 0X96, 0X87, 0X87, 0X79, 0X69, 0X69, 0X69, 0X78, 0X78,   //1907  
  363.       0X86, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1908  
  364.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1909  
  365.       0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1910  
  366.       0X96, 0XA5, 0X87, 0X96, 0X87, 0X87, 0X79, 0X69, 0X69, 0X69, 0X78, 0X78,   //1911  
  367.       0X86, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1912  
  368.       0X95, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1913  
  369.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1914  
  370.       0X96, 0XA5, 0X97, 0X96, 0X97, 0X87, 0X79, 0X79, 0X69, 0X69, 0X78, 0X78,   //1915  
  371.       0X96, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1916  
  372.       0X95, 0XB4, 0X96, 0XA6, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X87,   //1917  
  373.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X77,   //1918  
  374.       0X96, 0XA5, 0X97, 0X96, 0X97, 0X87, 0X79, 0X79, 0X69, 0X69, 0X78, 0X78,   //1919  
  375.       0X96, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1920  
  376.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X87,   //1921  
  377.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X77,   //1922  
  378.       0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X69, 0X69, 0X78, 0X78,   //1923  
  379.       0X96, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1924  
  380.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X87,   //1925  
  381.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1926  
  382.       0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1927  
  383.       0X96, 0XA5, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1928  
  384.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1929  
  385.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1930  
  386.       0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1931  
  387.       0X96, 0XA5, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1932  
  388.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1933  
  389.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1934  
  390.       0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1935  
  391.       0X96, 0XA5, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1936  
  392.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1937  
  393.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1938  
  394.       0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1939  
  395.       0X96, 0XA5, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1940  
  396.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1941  
  397.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1942  
  398.       0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1943  
  399.       0X96, 0XA5, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1944  
  400.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1945  
  401.       0X95, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X77,   //1946  
  402.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1947  
  403.       0X96, 0XA5, 0XA6, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //1948  
  404.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X79, 0X78, 0X79, 0X77, 0X87,   //1949  
  405.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X77,   //1950  
  406.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1951  
  407.       0X96, 0XA5, 0XA6, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //1952  
  408.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1953  
  409.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X68, 0X78, 0X87,   //1954  
  410.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1955  
  411.       0X96, 0XA5, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //1956  
  412.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1957  
  413.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1958  
  414.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1959  
  415.       0X96, 0XA4, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1960  
  416.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1961  
  417.       0X96, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1962  
  418.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1963  
  419.       0X96, 0XA4, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1964  
  420.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1965  
  421.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1966  
  422.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1967  
  423.       0X96, 0XA4, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1968  
  424.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1969  
  425.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1970  
  426.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1971  
  427.       0X96, 0XA4, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1972  
  428.       0XA5, 0XB5, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1973  
  429.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1974  
  430.       0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X77,   //1975  
  431.       0X96, 0XA4, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X89, 0X88, 0X78, 0X87, 0X87,   //1976  
  432.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //1977  
  433.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X78, 0X87,   //1978  
  434.       0X96, 0XB4, 0X96, 0XA6, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X77,   //1979  
  435.       0X96, 0XA4, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1980  
  436.       0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X77, 0X87,   //1981  
  437.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1982  
  438.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X77,   //1983  
  439.       0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X87,   //1984  
  440.       0XA5, 0XB4, 0XA6, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //1985  
  441.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1986  
  442.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X79, 0X78, 0X69, 0X78, 0X87,   //1987  
  443.       0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //1988  
  444.       0XA5, 0XB4, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1989  
  445.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1990  
  446.       0X95, 0XB4, 0X96, 0XA5, 0X86, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1991  
  447.       0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //1992  
  448.       0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1993  
  449.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1994  
  450.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X76, 0X78, 0X69, 0X78, 0X87,   //1995  
  451.       0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //1996  
  452.       0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1997  
  453.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1998  
  454.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1999  
  455.       0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //2000  
  456.       0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2001  
  457.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //2002  
  458.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //2003  
  459.       0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //2004  
  460.       0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2005  
  461.       0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2006  
  462.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //2007  
  463.       0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X86,   //2008  
  464.       0XA5, 0XB3, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2009  
  465.       0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2010  
  466.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X78, 0X87,   //2011  
  467.       0X96, 0XB4, 0XA5, 0XB5, 0XA5, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X86,   //2012  
  468.       0XA5, 0XB3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X87,   //2013  
  469.       0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2014  
  470.       0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //2015  
  471.       0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X86,   //2016  
  472.       0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X87,   //2017  
  473.       0XA5, 0XB4, 0XA6, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2018  
  474.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //2019  
  475.       0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X86,   //2020  
  476.       0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //2021  
  477.       0XA5, 0XB4, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2022  
  478.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //2023  
  479.       0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X96,   //2024  
  480.       0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //2025  
  481.       0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2026  
  482.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //2027  
  483.       0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X96,   //2028  
  484.       0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //2029  
  485.       0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2030  
  486.       0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //2031  
  487.       0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X96,   //2032  
  488.       0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X86,   //2033  
  489.       0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X78, 0X88, 0X78, 0X87, 0X87,   //2034  
  490.       0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2035  
  491.       0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X96,   //2036  
  492.       0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //2037  
  493.       0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2038  
  494.       0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2039  
  495.       0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X96,   //2040  
  496.       0XA5, 0XC3, 0XA5, 0XB5, 0XA5, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X86,   //2041  
  497.       0XA5, 0XB3, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2042  
  498.       0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2043  
  499.       0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X88, 0X87, 0X96,   //2044  
  500.       0XA5, 0XC3, 0XA5, 0XB4, 0XA5, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X86,   //2045  
  501.       0XA5, 0XB3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X87,   //2046  
  502.       0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2047  
  503.       0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA5, 0X97, 0X87, 0X87, 0X88, 0X86, 0X96,   //2048  
  504.       0XA4, 0XC3, 0XA5, 0XA5, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X86,   //2049  
  505.       0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X78, 0X78, 0X87, 0X87    //2050  
  506.        
  507. };  

使用方法:

  1. xDate *Date_x=new xDate();//取系统时间初始化-:) 
  2.  
  3. Memo1->Lines->Add("公历"+IntToStr(Date_x->GetYear()) +"年"); 
  4. Memo1->Lines->Add("公历"+IntToStr(Date_x->GetMonth())+"月"); 
  5. Memo1->Lines->Add("公历"+IntToStr(Date_x->GetDay())  +"日"); 
  6. if(Date_x->IsLeapYear(Date_x->GetYear())) 
  7.  
  8.         Memo1->Lines->Add("今年是闰年"); 
  9. else 
  10.         Memo1->Lines->Add("今年不是闰年"); 
  11.  
  12. Memo1->Lines->Add("今天是星期"+IntToStr(Date_x->WeekDay(Date_x->GetYear(),Date_x->GetMonth(),Date_x->GetDay()))); 
  13. Memo1->Lines->Add("公历:本月"+IntToStr(Date_x->MonthDays(Date_x->GetYear(),Date_x->GetMonth()))+" 天"); 
  14. Memo1->Lines->Add("阴历:本月"+IntToStr(Date_x->LunarMonthDays(Date_x->GetYear(),Date_x->GetMonth()))+" 天"); 
  15. Memo1->Lines->Add("阴历今年:"+IntToStr(Date_x->LunarYearDays(Date_x->GetYear()))+"天"); 
  16. //==================================================================// 
  17. char ch0[20]="天干记年法表示:"
  18. char Buffer0[8]; 
  19. Date_x->FormatLunarYear(Date_x->GetYear(),Buffer0); 
  20. strcat(ch0,Buffer0); 
  21. Memo1->Lines->Add(ch0); 
  22. //==================================================================// 
  23. char ch1[20]="月份中文表示法:"
  24. char Buffer1[8]; 
  25. Date_x->FormatMonth(Date_x->GetMonth(),Buffer1,true); 
  26. strcat(ch1,Buffer1); 
  27. Memo1->Lines->Add(ch1); 
  28. //==================================================================// 
  29. char ch2[20]="Day中文表示法:"
  30. char Buffer2[8]; 
  31. Date_x->FormatLunarDay(Date_x->GetDay(),Buffer2); 
  32. strcat(ch2,Buffer2); 
  33. Memo1->Lines->Add(ch2); 
  34. //==================================================================// 
  35. //计算两个日期相差的天数 
  36. Memo1->Lines->Add("距1956,2,21 有:"+IntToStr(Date_x->CalcDateDiff(Date_x->GetYear(),Date_x->GetMonth(),Date_x->GetDay(),1956,2,21))+" 天"); 
  37.  
  38. //节气计算 
  39. WORD iLunarYear,  iLunarMonth,  iLunarDay; 
  40. WORD  n; 
  41. n=Date_x->GetLunarDate(Date_x->GetYear(),Date_x->GetMonth(),Date_x->GetDay(),iLunarYear,iLunarMonth,iLunarDay); 
  42. if(n) 
  43.         Memo1->Lines->Add(IntToStr(n)); 
  44. else 
  45.         Memo1->Lines->Add("不是节气"); 
  46.  
  47. Memo1->Lines->Add("今天阴历是:"+IntToStr(iLunarYear)+"-"+IntToStr(iLunarMonth)+"-"+IntToStr(iLunarDay)); 

 

被阅543次, 0投一票农历
  • 看完了要说点啥么?
  • 昵称 (不填说不了话)
  • 信箱地址 (不会被公开,但是不填也说不了话)
  • 网址 (这个不填也成)

Powered by MiniBoke v2.0.0.8 Build 0828

Copyright © 2008 迷你博客. All rights reserved.

粤ICP备07500939号