?? time.c
字號:
/*1973*/ 5,20,4,19,6,21,5,20,5,21,6,21,7,23,8,23,8,23,8,23,7,22,7,22,
/*1974*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,9,24,8,23,7,22,
/*1975*/ 6,21,4,19,6,21,5,21,6,22,6,22,8,23,8,24,8,23,9,24,8,23,8,22,
/*1976*/ 6,21,5,19,5,20,4,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*1977*/ 5,20,4,19,6,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*1978*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,8,24,8,23,7,22,
/*1979*/ 6,21,4,19,6,21,5,21,6,21,6,22,8,23,8,24,8,23,9,24,8,23,8,22,
/*1980*/ 6,21,5,19,5,20,4,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*1981*/ 5,20,4,19,6,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*1982*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,8,24,8,22,7,22,
/*1983*/ 6,20,4,19,6,21,5,20,6,21,6,22,8,23,8,24,8,23,9,24,8,23,8,22,
/*1984*/ 6,21,4,19,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,22,
/*1985*/ 5,20,4,19,5,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*1986*/ 5,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,8,24,8,22,7,22,
/*1987*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,24,8,23,9,24,8,23,7,22,
/*1988*/ 6,21,5,19,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,21,
/*1989*/ 5,20,4,19,5,20,5,20,5,21,6,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*1990*/ 5,20,4,19,6,21,5,20,6,21,6,21,7,23,8,23,8,23,8,24,8,22,7,22,
/*1991*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,9,24,8,23,7,22,
/*1992*/ 6,21,4,19,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,21,
/*1993*/ 5,20,4,18,5,20,5,20,5,21,6,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*1994*/ 5,20,4,19,6,21,5,20,6,21,6,21,7,23,8,23,8,23,8,23,7,22,7,22,
/*1995*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,9,24,8,23,7,22,
/*1996*/ 6,21,4,19,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,21,
/*1997*/ 5,20,4,18,5,20,5,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*1998*/ 5,20,4,19,6,21,5,20,6,21,6,21,7,23,8,23,8,23,8,23,7,22,7,22,
/*1999*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,9,24,8,23,7,22,
/*2000*/ 6,21,4,19,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,21,
/*2001*/ 5,20,4,18,5,20,5,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*2002*/ 5,20,4,19,6,21,5,20,6,21,6,21,7,23,8,23,8,23,8,23,7,22,7,22,
/*2003*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,9,24,8,23,7,22,
/*2004*/ 6,21,4,19,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,21,
/*2005*/ 5,20,4,18,5,20,5,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*2006*/ 5,20,4,19,6,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*2007*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,9,24,8,23,7,22,
/*2008*/ 6,21,4,19,5,20,4,20,5,21,5,21,7,22,7,23,7,22,8,23,7,22,7,21,
/*2009*/ 5,20,4,18,5,20,4,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*2010*/ 5,20,4,19,6,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*2011*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,8,24,8,23,7,22,
/*2012*/ 6,21,4,19,5,20,4,20,5,20,5,21,7,22,7,23,7,22,8,23,7,22,7,21,
/*2013*/ 5,20,4,18,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,22,
/*2014*/ 5,20,4,19,6,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*2015*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,8,24,8,22,7,22,
/*2016*/ 6,20,4,19,5,20,4,19,5,20,5,21,7,22,7,23,7,22,8,23,7,22,7,21,
/*2017*/ 5,20,3,18,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,22,
/*2018*/ 5,20,4,19,6,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*2019*/ 5,20,4,19,6,21,5,20,6,21,6,21,7,23,8,23,8,23,8,24,8,22,7,22,
/*2020*/ 6,20,4,19,5,20,4,19,5,20,5,21,6,22,7,22,7,22,8,23,7,22,7,21,
/*2021*/ 5,20,3,18,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,21,
/*2022*/ 5,20,4,19,5,20,5,20,5,21,6,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*2023*/ 5,20,4,19,6,21,5,20,6,21,6,21,7,23,8,23,8,23,8,24,8,22,7,22,
/*2024*/ 6,20,4,19,5,20,4,19,5,20,5,21,6,22,7,22,7,22,8,23,7,22,6,21,
/*2025*/ 5,20,3,18,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,21,
/*2026*/ 5,20,4,18,6,20,5,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*2027*/ 5,20,4,19,6,21,5,20,6,21,6,21,7,23,8,23,8,23,8,23,7,22,7,22,
/*2028*/ 6,20,4,19,5,20,4,19,5,20,5,21,6,22,7,22,7,22,8,23,7,22,6,21,
/*2029*/ 5,20,3,18,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,21,
/*2030*/ 5,20,4,18,5,20,5,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*2031*/ 5,20,4,19,6,21,5,20,6,21,6,21,7,23,8,23,8,23,8,23,7,22,7,22,
/*2032*/ 6,20,4,19,5,20,4,19,5,20,5,21,6,22,7,22,7,22,8,23,7,22,6,21,
/*2033*/ 5,20,3,18,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,21,
/*2034*/ 5,20,4,18,5,20,5,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*2035*/ 5,20,4,19,6,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*2036*/ 6,20,4,19,5,20,4,19,5,20,5,21,6,22,7,22,7,22,8,23,7,22,6,21,
/*2037*/ 5,20,3,18,5,20,4,20,5,21,5,21,7,22,7,23,7,23,8,23,7,22,7,21,
/*2038*/ 5,20,4,18,5,20,5,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*2039*/ 5,20,4,19,6,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*2040*/ 6,20,4,19,5,20,4,19,5,20,5,21,6,22,7,22,7,22,8,23,7,22,6,21,
/*2041*/ 5,20,3,18,5,20,4,20,5,20,5,21,7,22,7,23,7,22,8,23,7,22,7,21,
/*2042*/ 5,20,4,18,5,20,4,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*2043*/ 5,20,4,19,6,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*2044*/ 6,20,4,19,5,20,4,19,5,20,5,21,6,22,7,22,7,22,7,23,7,22,6,21,
/*2045*/ 5,20,3,18,5,20,4,19,5,20,5,21,7,22,7,23,7,22,8,23,7,22,7,21,
/*2046*/ 5,20,4,18,5,20,4,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*2047*/ 5,20,4,19,6,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*2048*/ 6,20,4,19,5,20,4,19,5,20,5,20,6,22,7,22,7,22,7,23,7,21,6,21,
/*2049*/ 5,19,3,18,5,20,4,19,5,20,5,21,6,22,7,22,7,22,8,23,7,22,7,21,
};
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---根據農歷年份得到干支紀年字符串-------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
void GetGzYearStr(short MoonTimeYear,unsigned char *pStr)
{
const unsigned char *p;
p=&MCTG[(MoonTimeYear%10)*2];
*pStr++=*p++;
*pStr++=*p++;
p=&MCDZ[(MoonTimeYear%12)*2];
*pStr++=*p++;
*pStr++=*p++;
*pStr=0;
}
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---計算是否節氣日期-------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
unsigned char * GetSolarterm(PDATIME *pSunTime)
{
unsigned char *buf;
short offset;
offset=(pSunTime->year-1950)*24+(pSunTime->month-1)*2;
buf=(unsigned char *)SolartermStore+offset;
if(pSunTime->day==buf[0]||pSunTime->day==buf[1])
{
offset=pSunTime->month*2;
if(pSunTime->day<15)offset-=2;else offset--;
return (unsigned char *)SolartermStr[offset];
}
else return NULL;
}
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---計算農歷日期-------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
void GetMonthCalendar(const PDATIME *pSunTime,PDATIME *pMoonTime)
{
unsigned char str[4],str1[2];
unsigned short i,j,c_month,c_day,r_month,beforflags;
unsigned short y_days,l_days,days,month;
unsigned short Status;/*農歷閏月標志*/
unsigned short Rmonth;/*農歷閏月月份*/
short addr;
unsigned char *s;
r_month=0;
beforflags=0;
i=pSunTime->year-1949;
s=(unsigned char *)MCNewyear;
str[0]=s[i];
c_month=str[0]/100; /*春節的月份*/
c_day=str[0]%100; /*春節的天數*/
pMoonTime->year=pSunTime->year-1901;
addr=i*2;
if(pSunTime->month<c_month||(pSunTime->month==c_month&&pSunTime->day<c_day))
{
addr-=2;/*日期在春節日子前*/
beforflags=1;
}
if(beforflags==0) pMoonTime->year++;/*農歷年*/
pMoonTime->year%=60;
s=(unsigned char *)MCTable+addr;
str[0]=s[0];str[1]=s[1];
if(str[0]&0x80)
{
s=s-2;
str1[0]=s[0];
r_month=((str[0]>>4)&0x03)*8+((str1[0]>>4)&0x07);/*閏月*/
Rmonth=r_month;
}
for(i=0;i<2;i++)
{
if(i==0) month=pSunTime->month;
else month=c_month;
switch(month)
{
case 1: days=0;break;
case 2: days=31;break;
case 3: days=59;break;
case 4: days=90;break;
case 5: days=120;break;
case 6: days=151;break;
case 7: days=181;break;
case 8: days=212;break;
case 9: days=243;break;
case 10: days=273;break;
case 11: days=304;break;
case 12: days=334;break;
}
if(month>2)if(GetMonthMaxDay(pSunTime->year,2)==29) days++;
if(i==0)y_days=days;
else l_days=days;
}
Status=0;
if(beforflags)/*比春節日期小*/
{
days=(l_days+c_day)-(y_days+pSunTime->day);/*距春節的天數*/
pMoonTime->month=12;
if(r_month!=0) j=7;
else j=4;
i=0;
while(i<2)
{
if((str[i]>>(j-1))&0x01) month=30;
else month=29;
if(days<=month) break;
if(Status==1) Status=0;
if(pMoonTime->month!=r_month) pMoonTime->month--;
else if(pMoonTime->month==r_month)
{
Status=1;r_month=0;
}
days-=month;
j--;
if(i==0&&j==6)j=4;
else if(j==0){i++;j=8;}
}
pMoonTime->day=month-days+1;
}
else
{
pMoonTime->month=1;
days=(y_days+pSunTime->day)-(l_days+c_day)+1;/*距春節的天數*/
for(i=2,j=0;i>0;)
{
if((str[i-1]>>j)&0x01) month=30;
else month=29;
if(Status==2&&pMoonTime->month==Rmonth)Status=1;
else Status=0;
if(days<=month) break;
if(pMoonTime->month!=r_month) (pMoonTime->month)++;
else
{
Status=2;r_month=0;
}
days-=month;
j++;
if(i==2&&j>7) {i--;j=0;}
else
{
if(i==1&&j==4) j=6;
else if(i==1&&j>6){i--;j=0;}
}
}
pMoonTime->day=days;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -