VC++ 农历类Word文档下载推荐.docx
《VC++ 农历类Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VC++ 农历类Word文档下载推荐.docx(47页珍藏版)》请在冰豆网上搜索。
//年柱,2个中文
CStringm_cMonth;
//月柱,2个中文
CStringm_cDay;
//日柱,2个中文
CStringm_cAnimal;
//动物属相
//节日
CStringm_lunarFestival;
//农历节日
CStringm_solarFestival;
//公历节日
CStringm_solarTerms;
//节气
BOOLm_bStrong;
//强调的节日放假日
/************************************************************************/
/*计算农历日期*/
//计算农历
voidLunar(COleDateTimetmMeas);
private:
/*农[阴]历所使用的全局常量*/
//日期资料
staticconstintm_lunarInfo[];
//农历日期
staticconstCStringm_GAN[];
//天干
staticconstCStringm_ZHI[];
//地支
staticconstCStringm_Animals[];
//生肖
staticconstCStringm_nStr1[];
//数字的中文描述
staticconstCStringm_nStr2[];
staticconstCStringm_lFtv[];
/*公[阳]历所使用的全局常量*/
/************************************************************************/
staticconstintm_solarMonth[];
//月的天数
staticconstCStringm_solarTerm[];
//节气的中文描述
staticconstintm_sTermInfo[];
//节气的日期信息
staticconstCStringm_monthName[];
//月的英文描述
//公历节日*表示放假日
staticconstCStringm_sFtv[];
//某月的第几个星期几。
5,6,7,8表示到数第1,2,3,4个星期几
staticconstCStringm_wFtv[];
//检测时间
COleDateTimem_tmMeas;
//检测日期
//返回农历y年的总天数
intgetYearDays(inty);
//返回农历y年闰月的天数
intgetLeapDays(inty);
//返回农历y年闰哪个月1-12,没闰返回0
intgetLeapMonth(inty);
//返回农历y年m月的总天数
intgetMonthDays(inty,intm);
//某年的第n个节气为几日(从0小寒起算)
intgetSTerm(inty,intn);
//得到农历天的描述
CStringgetWordDay(intd);
//得到年号纪年描述
CStringgetYearName(inty);
//得到干支纪年
CStringgetGZ(LONGLONGnum);
//从节日字符里解析出数字,描述,*
voidparseFtv(CStringstrInfo,int&
nFirst,int&
nLast,CString&
strDesc,BOOL&
bStrong);
//得到当日为本月的第几周
intgetWeekOfMonth(inty,intm,intd);
//得到当月有几周
intgetWeeksOfMonth(inty,intm);
//计算指定年代与UTC时间相差的100ns数
LONGLONGgetUTC(intnYear,
intnMonth,
intnDay,
intnHour=0,
intnMin=0,
intnSec=0);
};
CPP文件
#include"
StdAfx.h"
.\lunar.h"
#include<
math.h>
//数组存入阴历1900年到2100年每年中的月天数信息,
//阴历每月只能是29或30天,一年用12(或13)个二进制位表示,对应位为1表30天,否则为29天
constintCLunar:
:
m_lunarInfo[]={//农历日期信息
0x4bd8,0x4ae0,0xa570,0x54d5,0xd260,0xd950,0x5554,0x56af,0x9ad0,0x55d2,
0x4ae0,0xa5b6,0xa4d0,0xd250,0xd255,0xb54f,0xd6a0,0xada2,0x95b0,0x4977,
0x497f,0xa4b0,0xb4b5,0x6a50,0x6d40,0xab54,0x2b6f,0x9570,0x52f2,0x4970,
0x6566,0xd4a0,0xea50,0x6a95,0x5adf,0x2b60,0x86e3,0x92ef,0xc8d7,0xc95f,
0xd4a0,0xd8a6,0xb55f,0x56a0,0xa5b4,0x25df,0x92d0,0xd2b2,0xa950,0xb557,
0x6ca0,0xb550,0x5355,0x4daf,0xa5b0,0x4573,0x52bf,0xa9a8,0xe950,0x6aa0,
0xaea6,0xab50,0x4b60,0xaae4,0xa570,0x5260,0xf263,0xd950,0x5b57,0x56a0,
0x96d0,0x4dd5,0x4ad0,0xa4d0,0xd4d4,0xd250,0xd558,0xb540,0xb6a0,0x95a6,
0x95bf,0x49b0,0xa974,0xa4b0,0xb27a,0x6a50,0x6d40,0xaf46,0xab60,0x9570,
0x4af5,0x4970,0x64b0,0x74a3,0xea50,0x6b58,0x5ac0,0xab60,0x96d5,0x92e0,
0xc960,0xd954,0xd4a0,0xda50,0x7552,0x56a0,0xabb7,0x25d0,0x92d0,0xcab5,
0xa950,0xb4a0,0xbaa4,0xad50,0x55d9,0x4ba0,0xa5b0,0x5176,0x52bf,0xa930,
0x7954,0x6aa0,0xad50,0x5b52,0x4b60,0xa6e6,0xa4e0,0xd260,0xea65,0xd530,
0x5aa0,0x76a3,0x96d0,0x4afb,0x4ad0,0xa4d0,0xd0b6,0xd25f,0xd520,0xdd45,
0xb5a0,0x56d0,0x55b2,0x49b0,0xa577,0xa4b0,0xaa50,0xb255,0x6d2f,0xada0,
0x4b63,0x937f,0x49f8,0x4970,0x64b0,0x68a6,0xea5f,0x6b20,0xa6c4,0xaaef,
0x92e0,0xd2e3,0xc960,0xd557,0xd4a0,0xda50,0x5d55,0x56a0,0xa6d0,0x55d4,
0x52d0,0xa9b8,0xa950,0xb4a0,0xb6a6,0xad50,0x55a0,0xaba4,0xa5b0,0x52b0,
0xb273,0x6930,0x7337,0x6aa0,0xad50,0x4b55,0x4b6f,0xa570,0x54e4,0xd260,
0xe968,0xd520,0xdaa0,0x6aa6,0x56df,0x4ae0,0xa9d4,0xa4d0,0xd150,0xf252,
0xd520
constCStringCLunar:
m_GAN[]={//天干
_T("
甲"
),_T("
乙"
丙"
丁"
戊"
己"
庚"
辛"
),
壬"
癸"
)
m_ZHI[]={//地支
子"
丑"
寅"
卯"
辰"
巳"
午"
未"
申"
酉"
戌"
亥"
)
m_Animals[]={//生肖
鼠"
牛"
虎"
兔"
龙"
蛇"
马"
羊"
猴"
鸡"
狗"
猪"
m_nStr1[]={//数字的中文描述
日"
一"
二"
三"
四"
五"
六"
七"
八"
九"
十"
m_nStr2[]={//数字的中文描述
初"
廿"
卅"
□"
m_solarMonth[]={//月的天数
31,28,31,30,31,30,31,31,30,31,30,31
m_solarTerm[]={//节气的中文描述
小寒"
大寒"
立春"
雨水"
惊蛰"
春分"
清明"
谷雨"
立夏"
小满"
芒种"
夏至"
小暑"
大暑"
立秋"
处暑"
白露"
秋分"
寒露"
霜降"
立冬"
小雪"
大雪"
冬至"
m_sTermInfo[]={//节气的日期信息
0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,
263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,
504758
m_monthName[]={//月的英文描述
JAN"
FEB"
MAR"
APR"
MAY"
JUN"
JUL"
AUG"
SEP"
OCT"
NOV"
DEC"
m_sFtv[]={//公历节日*表示放假日
0101*新年元旦"
0202世界湿地日"
0207国际声援南非日"
0210国际气象节"
0214情人节"
0301国际海豹日"
0303全国爱耳日"
0308国际妇女节"
0312植树节孙中山逝世纪念日"
0314国际警察日"
0315国际消费者权益日"
0317中国国医节国际航海日"
0321世界森林日消除种族歧视国际日"
0321世界儿歌日"
0322世界水日"
0323世界气象日"
0324世界防治结核病日"
0325全国中小学生安全教育日"
0330巴勒斯坦国土日"
0401愚人节全国爱国卫生运动月(四月)税收宣传月(四月)"
0407世界卫生日"
0422世界地球日"
0423世界图书和版权日"
0424亚非新闻工作者日"
0501国际劳动节"
0504中国五四青年节"
0505碘缺乏病防治日"
0508世界红十字日"
0512国际护士节"
0515国际家庭日"
0517世界电信日"
0518国际博物馆日"
0520全国学生营养日"
0523国际牛奶日"
0531世界无烟日"
0601国际儿童节"
0605世界环境日"
0606全国爱眼日"
0617防治荒漠化和干旱日"
0623国际奥林匹克日"
0625全国土地日"
0626国际反毒品日"
0701中国共产党建党日世界建筑日"
0702国际体育记者日"
0707中国人民抗日战争纪念日"
0711世界人口日"
0730非洲妇女日"
0801中国建军节"
0808中国男子节(爸爸节)"
0815日本正式宣布无条件投降日"
0908国际扫盲日国际新闻工作者日"
0910教师节"
0914世界清洁地球日"
0916国际臭氧层保护日"
0918九·
一八事变纪念日"
0920国际爱牙日"
0927世界旅游日"
1001*国庆节世界音乐日国际老人节"
1001国际音乐日"
1002国际和平与民主自由斗争日"
1004世界动物日"
1008全国高血压日"
1008世界视觉日"
1009世界邮政日万国邮联日"
1010辛亥革命纪念日世界精神卫生日"
1013世界保健日国际教师节"
1014世界标准日"
1015国际盲人节(白手杖节)"
1016世界粮食日"
1017世界消除贫困日"
1022世界传统医药日"
1024联合国日世界发展信息日"
1031世界勤俭日"
1107十月社会主义革命纪念日"
1108中国记者日"
1109全国消防安全宣传教育日"
1110世界青年节"
1111国际科学与和平周(本日所属的一周)"
1112孙中山诞辰纪念日"
1114世界糖尿病日"
1117国际大学生节世界学生节"
1121世界问候日世界电视日"
1129国际声援巴勒斯坦人民国际日"
1201世界艾滋病日"
1203世界残疾人日"
1205国际经济和社会发展志愿人员日"
1208国际儿童电视日"
1209世界足球日"
1210世界人权日"
1212西安事变纪念日"
1213南京大屠杀(1937年)纪念日!
紧记血泪史!
"
1221国际篮球日"
1224平安夜"
1225圣诞节"
1229国际生物多样性日"
m_wFtv[]={//某月的第几个星期几。
0110黑人日"
0150世界麻风日"
),//一月的最后一个星期日(月倒数第一个星期日)
0520国际母亲节"
0530全国助残日"
0630父亲节"
0911劳动节"
0932国际和平日"
0940国际聋人节世界儿童日"
0950世界海事日"
1011国际住房日"
1013国际减轻自然灾害日(减灾日)"
1144感恩节"
m_lFtv[]={//农历节日
0101*春节"
0115元宵节"
0202龙抬头节"
0323妈祖生辰(天上圣母诞辰)"
0505端午节"
0707七七中国情人节"
0815中秋节"
0909重阳节"
1208腊八节"
1224小年"
1200*除夕"
CLunar:
CLunar(void)
m_lYear=0;
m_lMonth=0;
m_lDay=0;
m_isLeap=FALSE;
m_cYear=_T("
);
m_cMonth=_T("
m_cDay=_T("
m_cAnimal=_T("
m_lunarFestival=_T("
m_solarFestival=_T("
m_solarTerms=_T("
m_bStrong=FALSE;
//强调的节日
}
~CLunar(void)
//返回农历y年的总天数
intCLunar:
getYearDays(inty)
inti=0,sum=348;
for(i=0x8000;
i>
0x8;
>
=1)
sum+=(m_lunarInfo[y-1900]&
i)?
1:
0;
return(sum+getLeapDays(y));
//返回农历y年闰月的天数
getLeapDays(inty)
if(getLeapMonth(y))
return((m_lunarInfo[y-1899]&
0xf)==0xf?
30:
29);
else
return(0);
//返回农历y年闰哪个月1-12,没闰返回0
getLeapMonth(inty)
intlm=m_lunarInfo[y-1900]&
0xf;
return(lm==0xf?
0:
lm);
//返回农历y年m月的总天数
getMonthDays(inty,intm)
return((m_lunarInfo[y-1900]&
(0x10000>
m))?
29);
//传入offset返回干支,0=甲子
//年柱1900年立春后为庚子年(60进制36)
//cyclical(SY-1900+36)+'
年【'
+Animals[(SY-4)%12]+'
年】
CStringCLunar:
getGZ(LONGLONGnum){
returnm_GAN[num%10]+m_ZHI[num%12];
//某年的第n个节气为几日(从0小寒起算)
getSTerm(inty,intn)
{
LONGLONGlUtc1=-22085493000000000;
//1900,1