农历天干地支算法源代码大全(javascriptvbscriptC#flashC++C等等转破阵子.如是我闻

原来还准备自己写算法,并研究农历规则。发现那太难和麻烦了,光是农历的推算那就我等专门研究历法的人一下搞懂的。后来发现

下。实现了公历农历转换的功能。但是只能算到1900~2100年之间的。基本够日常使用了。源代码如下:

///11.classChinaDateTime12.{13.privateintyear,month,dayOfMonth;14.privateboolisLeap;15.publicDateTimetime;16.17.////

18.///获取当前日期的农历年19.///20.publicint

Year21.{22.get{returnyear;}23.}24.25.////

26.///获取当前日期的农历月份27.///28.publicint

Month29.{30.get{returnmonth;}31.}32.33.////

34.///获取当前日期的农历月中天数35.///36.public

intDayOfMonth37.{38.get{returndayOfMonth;}39.}40.41.////

42.///获取当前日期是否为闰月中的日期43.///44.

cc.MinSupportedDateTime.ToShortDateString()+"到"+cc.MaxSupportedDateTime.ToShortDateString());60.year=cc.GetYear(time);61.month=cc.GetMonth(time);62.dayOfMonth=cc.GetDayOfMonth(time);63.isLeap=cc.IsLeapMonth(year,month);64.if(isLeap)month-=1;65.this.time=time;66.67.}68.69.////

70.///返回当前日前的农历日期。71.///72.public

80.///81.///82.///

83.///84.publicChinaDateTime(int

publicDateTimeToDateTime()108.{109.returncc.ToDateTime(year,isLeapmonth+1:month,dayOfMonth,time.Hour,time.Minute,

///116.///117.publicstaticDateTimeToDateTime

///126.///127.publicstaticChinaDateTime

ToChinaDateTime(DateTimeTime)128.{129.returnnewChinaDateTime(Time);130.}131.}132.}二、C#代码(2):

1、农历类的使用

.net框架不支持直接将日期转换成农历格式的字符串,那么要将显示农历格式的日期,就只要自已写代码了。不过由于已经有了

ChineseLunisolarCalendar类实现了公历转换为农历日期的功能,所以要写这样的代码也比较简单。需要用到

ChineseLunisolarCalendar以下几个主要方法:

intGetYear(DateTimetime)获取指定公历日期的农历年份,使用的还是公历纪元。在每年的元旦之后春节之前农历的纪年会比公

历小1,其它时候等于公历纪年。虽然农历使用传说中的耶稣生日纪元似乎不太妥当,不过我们确实已经几十年没有实行一个更好的纪

年办法,也只有将就了。

intGetMonth(DateTimetime)获取指定公历日期的农历月份。这里要注意了,由于农历有接近三分之一的年份存在闰月,则在这

些年份里会有十三个,而具体哪一个月是闰月也说不准,这里不同于希伯来历。以今年为例,今年闰七月,则此方法在参数为闰七月

的日期是返回值为8,参数为农历十二月的日期时返回值为13

boolIsLeapMonth(intyear,intmonth)获取指定农历年份和月份是否为闰月,这个函数和上个函数配合使用就可以算出农历

的月份了。

intGetDayOfMonth(DateTimetime)获取指定公历日期的农历天数,这个值根据大月或者小月取值是1到30或者1到29,MSDN上说的

1到31显然是错的,没有哪个农历月份会有31天。

intGetSexagenaryYear(DateTimetime)获取指定公历日期的农历年份的干支纪年,从1到60,分别是甲子、乙丑、丙寅、….癸亥

,比如戊戌变法、辛亥革命就是按这个来命名的。当然算八字也少不了这个。

intGetCelestialStem(intsexagenaryYear)获取一个天支的天干,从1到10,表示甲、乙、丙….,说白了就是对10取模。

intGetTerrestrialBranch(intsexagenaryYear))获取一个干支的地支,,从1到12,表示子、丑、寅、…今年是狗年,那么今

年年份的地支就是“戌”。

有了这几个方法,显示某天的农历月份日期、农历节日等都是小菜一碟,算命先生排八字用这几个方法,又快又准确,写出的代码也

很短。

2、几种东亚农历类的区别

经过我的测试,ChineseLunisolarCalendar,JapaneseLunisolarCalendar,KoreanLunisolaCalendarr,TaiwanLunisolarCalendar

这四种日历,无论哪一种,以2006年2月6日为参数,调用它们的GetMonth方法得到的结果都是1,GetDayOfMonth得到的结果都是8。

想想也是,我们过的端午节和韩国的不太可能不是一天。

但是调用GetYear方法得到结果就有区别了ChineseLunisolarCalendar和KoreanLunisolarCalendar都返回2006,也就是公历纪年,

TaiwanLunisolarCalendar的返回值是95,依然是民国纪年,JapaneseLunisolarCalendar的返回值是18,平成纪年。

另外的一个区别是这四种日历的MinSupportedDateTime和MaxSupportedDateTime各不一样,以下是对照表:

日历类MinSupportedDateTimeMaxSupportedDateTimeChineseLunisolarCalendar公元1901年1月初1公元2100年12月29TaiwanLunisolarCalendar民国1年1月初1民国139年12月29JapaneseLunisolarCalendar昭和35年1月初1平成61年12月29KoreanLunisolarCalendar公元918年1月初1公元2050年12月29

韩国农历类支持的最小日期为918年(也即高丽王朝建立的年份),以此而论,中国农历类支持的最小日期不说从商周算起,从汉唐算

总该没问题吧?微软公司啊,又在“厚彼薄此”,唉。

其次,日本还以天皇纪年,如果哪天xxxx,岂不是使用JapaneseLunisolarCalendar写出的程序都有问题啦?

3、写自已的日期格式化器

culture.nlp的文件中(这个文件在以前的.net框架是一个独立的文件,在.net2.0被作为一个资源编译到mscorlib.dll中。)(我的

这个不能为DateTime写自已的格式化器的观点没有资料佐证,如有不当之处,请大家指正)

虽然不能为DataTime写自定义的格式器,但还有另外一个途径,就是为String类的Format方法写自定义格式化器,我测试了一下,效

果还不错,调用方式如下:

strings=String.Format(newChineseCalendarFormatter(),"{0:D}",DateTime.Now);可以得到“二〇〇六年正月初九”strings=String.Format(newChineseCalendarFormatter(),"{0:d}",DateTime.Now);可以得到“丙戌年正月初九”

虽然没有前面所设想的方便,但也还能接受,全部代码帖出如下:第一个类,主要是封装了农历的一些常用字符和对日历处理的最基本功能

1.usingSystem;2.usingSystem.Collections.Generic;3.usingSystem.Text;4.5.usingSystem.Globalization;6.usingSystem.Threading;7.8.publicclassChineseCalendarFormatter:IFormatProvider,ICustomFormatter9.{10.//实现IFormatProvider11.publicobjectGetFormat(TypeformatType)12.{13.if(formatType==typeof(ICustomFormatter))14.returnthis;15.else16.returnThread.CurrentThread.CurrentCulture.GetFormat(formatType);17.}18.19.//实现ICustomFormatter20.publicstringFormat(stringformat,objectarg,IFormatProvider

formatProvider)21.{22.strings;23.IFormattableformattable=argasIFormattable;24.if(formattable==null)25.s=arg.ToString();26.else27.s=formattable.ToString(format,formatProvider);28.if(arg.GetType()==typeof(DateTime))29.{30.DateTimetime=(DateTime)arg;31.switch(format)32.{33.case"D"://长日期格式34.s=String.Format("{0}年{1}月{2}",35.ChineseCalendarHelper.GetYear(time),36.ChineseCalendarHelper.GetMonth(time),37.ChineseCalendarHelper.GetDay(time));38.break;39.case"d"://短日期格式40.s=String.Format("{0}年{1}月{2}",

ChineseCalendarHelper.GetStemBranch(time),41.ChineseCalendarHelper.GetMonth(time),42.ChineseCalendarHelper.GetDay(time));43.break;44.case"M"://月日格式45.s=String.Format("{0}月{1}",

ChineseCalendarHelper.GetMonth(time),46.ChineseCalendarHelper.GetDay(time));47.break;48.case"Y"://年月格式49.s=String.Format("{0}年{1}月",

ChineseCalendarHelper.GetYear(time),50.ChineseCalendarHelper.GetMonth(time));51.break;52.default:53.s=String.Format("{0}年{1}月{2}",ChineseCalendarHelper.GetYear(time),54.ChineseCalendarHelper.GetMonth(time),55.ChineseCalendarHelper.GetDay(time));56.break;57.}58.}59.returns;60.}61.}这段代码中间处理格式那部份稍做改进,就可以支持更多的日期格式。

有了这两段代码为原型,要实现计算和显示一个日期的农历日期及其它功能,基本上就很容易了。

三、VBScript代码:

(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,37549

4,397447,419210,440795,462224,483532,504758)147.varsolarTerm=newArray("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","

小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至")148.varlFtv=newArray("0101*春节","0115元宵节","0505端午节","0707七夕情人节","0715中元节","0815中秋节","0909

重阳节","1208腊八节","1224小年","0100*除夕")149.varsFtv=newArray("0101*元旦","0214情人节","0308妇女节","0312植树节","0315消费者权益日",150."0401愚人节","0501劳动节","0504青年节","0512护士节","0601儿童节","0701建党节香港回归纪念",151."0801建军节","0808父亲节","0908茂生日","0909逝世纪念","0910教师节","0928孔子诞辰","1001*国庆节",152."1006老人节","1001ListenWind生日","1024联合国日","1112孙中山诞辰","1220澳门回归纪念","1225圣诞节","1226诞

lunarFestival+''+185.'';186.187.varcl='';188.return(cl+festival+'');189.}190.functionsetCalendar(){191.document.write('

Firefox,请使用查找、替换,把getYear()修改为getFullYear()就可以支持firefox了。

五、Flash代码:

农历FLASH源码、旧历FLASH日历、旧历FLASH时钟在FLASH中,制作时钟、日历都不难。在网上搜索一下,也会有一大遍源码等着你去下载。但不知是我孤陋寡闻,还是咋地。在网上

附上。希望大家共同讨论。其中难的就是闰月部分。

制作过程,前面的就不说了。直接发代码吧。新建一倒计时类"Taoshaw_data.as"。然后输入如下代码:

/*=============================================7.公元1900-2100两百年的农历类。8.类的调用方法说明9.getFullYear();获取新历年份10.getnewMonth();获取月份11.getDate()获取多少号.12.getSeconds();获取秒值13.getDay();获取星期几14.getHours();获取小时(整点)15.getMinutes();获取分数16.getTaosJYear();获取中国农历年.17.getTaoJMonth();获取中国农历月.18.getTaoJDay();获取中国农历日.19.getTaoJNianZhu();获取年柱20.getYueZhu();获取月柱21.getRiZhu();获取日柱22.getShiceng();获取时辰23.getJieQi();获取二十四节气24.=============================================*/25.privatevartao_txtnum_info=newArray(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);26.privatevartao_txtsolarMonth=newArray(31,28,31,30,31,30,31,31,30,31,30,31);27.//定义私有函数干支等信息28.privatevarGan=newArray("甲","乙","丙","丁","戊","己","庚","辛","壬",

"癸");29.privatevarZhi=newArray("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");30.privatevarAnimals=newArray("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");31.//农历节气32.privatevartao_txtsolarTerm=newArray("小寒","大寒","立春","雨水","惊蛰","春分","清

明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬",

"小雪","大雪","冬至");33.privatevartao_txtsTermInfo=newArray(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,

218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758);34.privatevarnStr1=newArray('日','一','二','三','四','五','六','七','八','九','十');35.privatevarnStr2=newArray('初','十','廿','卅','□');36.privatevarmonthName=newArray("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV",

"DEC");37.privatevarcyear:Number;38.privatevarcmonth:Number;39.privatevarcday:Number;40.privatevarisLeap:Boolean;41.privatevarnianzhu:String;42.privatevaryuezhu:String;43.privatevarrizhu:String;44.privatevarjie:String;45.publicfunctionTaoshaw_data(yearOrTimevalue:Number,month:Number,date:Number,hour:Number,minute:Number,

加onEnterFrame函数.215.onEnterFrame=function(){216.varmy_data:Taoshaw_data=newTaoshaw_data();217.//定义两个数组,用于显示**月,以及星期*218.varmy_xingqi:Array=newArray();219.my_xingqi=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];220.varmy_yuefen:Array=newArray();221.my_yuefen=["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"];222.//定义变量myhaoshu获取当前日的号数223.varmyhaoshu=my_data.getDate();224.//当数值小于10的时候,就在前面添加一个0;225.varmiao=my_data.getSeconds();226.varfen=my_data.getMinutes();227.if(fen<10){228.fen="0"+fen;229.}else{230.}231.if(miao<10){232.miao="0"+miao;233.}else{234.}235.if(myhaoshu<10){236.myhaoshu="0"+myhaoshu;237.}else{238.}239.show_txt.text="现在是"+my_data.getFullYear()+"年"+my_yuefen[my_data.getMonth()]+myhaoshu+"号"+my_xingqi

[my_data.getDay()]+my_data.getHours()+"时"+fen+"分"+miao+"秒。"+"旧历"+my_data.getTaosJYear()

+"."+my_data.getTaoJMonth()+"."+my_data.getTaoJDay()+"农历"+my_data.getTaoJNianZhu()+"年"+my_data.getYueZhu()

六、C++代码:

1、头文件1.//xDate.h

&iMonth,WORD&iDay,LONGiSpanDays);25.//计算公历iYear年iMonth月iDay日对应的节气0-24,0表不是节气26.staticWORDl_GetLunarHolDay(WORDiYear,

WORDiMonth,WORDiDay);27.public:28.//=====================================================================================//29.xDate(WORD

iYear,WORDiMonth,WORDiDay);30.xDate();31.//=====================================================================================//32.33.WORD

GetYear(){returnm_iYear;}34.WORDGetMonth(){returnm_iMonth;}35.WORDGetDay(){returnm_iDay;}36.37.//=====================================================================================//38.voidGetDate

(WORD&iYear,WORD&iMonth,WORD&iDay);39.BOOLSetDate(WORDiYear,WORDiMonth,WORDiDay);40.//=====================================================================================//41.//判断iYear是

不是闰年42.staticBOOLIsLeapYear(WORDiYear){return!(iYear%4)&&(iYear%100)||!(iYear%400);}43.44.//计算iYear,iMonth,iDay对应是星期几1年1月1日---65535年12月31日45.staticWORDWeekDay(WORDiYear,WORD

iMonth,WORDiDay);46.47.//返回iYear年iMonth月的天数1年1月---65535年12月48.staticWORDMonthDays(WORDiYear,WORDiMonth);49.50.//返回阴历iLunarYer年阴历iLunarMonth月的天数,如果iLunarMonth为闰月,51.//高字为第二个iLunarMonth月的天数

,否则高字为052.//1901年1月---2050年12月53.staticLONGLunarMonthDays(WORDiLunarYear,WORD

iLunarMonth);54.55.//返回阴历iLunarYear年的总天数56.//1901年1月---2050年12月57.staticWORDLunarYearDays(WORD

iLunarYear);58.59.//返回阴历iLunarYear年的闰月月份,如没有返回060.//1901年1月---2050年12月61.staticWORD

GetLeapMonth(WORDiLunarYear);62.63.//把iYear年格式化成天干记年法表示的字符串64.staticvoidFormatLunarYear(WORDiYear,char*pBuffer);65.66.//把iMonth格式化成中文字符串67.staticvoidFormatMonth(WORDiMonth,char*pBuffer,BOOLbLunar=

TRUE);68.69.//把iDay格式化成中文字符串70.staticvoidFormatLunarDay(WORDiDay,char*pBuffer);71.72.//计算公历两个日期间相差的天数1年1月1日---65535年12月31日73.staticLONGCalcDateDiff(WORDiEndYear,

WORDiEndMonth,WORDiEndDay,WORDiStartYear=START_YEAR,WORDiStartMonth=1,WORDiStartDay=1);74.75.//计算公历iYear年iMonth月iDay日对应的阴历日期,返回对应的阴历节气0-2476.//1901年1月1日---2050年12月31日

77.staticWORDGetLunarDate(WORDiYear,WORDiMonth,WORDiDay,WORD&iLunarYear,WORD&iLunarMonth,WORD

&iLunarDay);78.};79.80.#endif//XDATE_H2、实现文件1.//xDate.cpp2.#include"xDate.h"3.//#include4.5.6.externWORDgLunarMonthDay[];7.externBYTEgLunarMonth[];8.externBYTEgLunarHolDay[];9.10.constWORDSTART_YEAR=1901;11.constWORDEND_YEAR=2050;12.//===========================================================================//13.voidxDate::l_InitData()14.{15.SYSTEMTIMEsystime;16.::GetSystemTime(&systime);17.18.m_iYear=systime.wYear;19.m_iMonth=systime.wMonth;20.m_iDay=systime.wDay;21.}22.//===========================================================================//23.xDate::xDate(WORDiYear,WORD

iMonth,WORDiDay)24.{25.if(!SetDate(iYear,iMonth,iDay))26.l_InitData();27.}28.//===========================================================================//29.xDate::xDate()30.{31.l_InitData();32.}33.//===========================================================================//34.LONGxDate::CalcDateDiff(WORD

iEndYear,WORDiEndMonth,WORDiEndDay,WORDiStartYear,WORDiStartMonth,WORDiStartDay)35.{36.WORDmonthday[]={0,31,59,90,120,151,181,212,243,273,304,334};37.//计算两个年份1月1日之间相差的天数38.LONGiDiffDays=(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>21:0);45.iDiffDays+=iEndDay;46.//减去iStartYear年1月1日到iStartMonth月iStartDay日之间的天数47.iDiffDays-=(monthday[iStartMonth-1]+

(IsLeapYear(iStartYear)&&iStartMonth>21:0));48.iDiffDays-=iStartDay;49.returniDiffDays;50.}51.//===========================================================================//52.voidxDate::l_CalcLunarDate

(WORD&iYear,WORD&iMonth,WORD&iDay,LONGiSpanDays)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.else65.{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.LONGtmp=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

(WORDiYear,WORDiMonth,WORDiDay,WORD&iLunarYear,WORD&iLunarMonth,WORD&iLunarDay)102.{103.l_CalcLunarDate(iLunarYear,iLunarMonth,iLunarDay,CalcDateDiff(iYear,iMonth,iDay));104.returnl_GetLunarHolDay(iYear,iMonth,iDay);105.}106.//===========================================================================//107.//根据节气数据存储格式,计算

阳历iYear年iMonth月iDay日对应的节气,108.WORDxDate::l_GetLunarHolDay(WORDiYear,WORDiMonth,WORDiDay)109.110.111.{112.BYTE&flag=gLunarHolDay[(iYear-START_YEAR)*12+iMonth-1];113.WORDday;114.if(iDay<15)115.day=15-((flag>>4)&0x0f);116.else117.day=((flag)&0x0f)+15;118.if(iDay==day)119.return(iMonth-1)*2+(iDay>151:0)+1;120.else121.return0;122.}123.//===========================================================================//124.voidxDate::GetDate(WORD

&iYear,WORD&iMonth,WORD&iDay)125.{126.iYear=m_iYear;127.iMonth=m_iMonth;128.iDay=m_iDay;129.}130.//===========================================================================//131.BOOLxDate::SetDate(WORD

iYear,WORDiMonth,WORDiDay)132.{133.if(iYearEND_YEAR||iMonth<1||iMonth>12)134.returnFALSE;135.136.if(iDay<1||iDay>MonthDays(iYear,iMonth))137.returnFALSE;138.139.m_iYear=iYear;140.m_iMonth=iMonth;141.m_iDay=iDay;142.143.returnTRUE;144.}145.//===========================================================================//146.WORDxDate::WeekDay(WORD

iYear,WORDiMonth,WORDiDay)147.{148.//数组元素monthday表示第i个月以前的总天数除以7的余数149.WORDmonthday[]={0,3,3,6,1,4,6,2,5,0,3,5};150.WORDiDays=(iYear-1)%7+(iYear-1)/4-(iYear-1)/100+(iYear-1)/400;151.iDays+=(monthday[iMonth-1]+iDay);152.//如果iYear是闰年153.if(IsLeapYear(iYear)&&iMonth>2)154.iDays++;155.//返回:0,1,2,3,4,5,6表日、一、二、三、四、五、六156.returniDays%7;157.}158.//===========================================================================//159.WORDxDate::MonthDays(WORD

iYear,WORDiMonth)160.{161.switch(iMonth)162.{163.case1://一(月)164.case3://三(月)165.case5://五(月)166.case7://七(月)167.

case8://八(月)168.case10://十(月)169.case12://十二(月)170.return31;171.172.case4://四(月)173.case6://六(月)174.case9://九(月)175.case11://十一(月)

176.return30;177.178.case2://二(月)179.//如果是闰年180.if(IsLeapYear(iYear))181.return29;182.else183.return28;184.185.}186.return0;187.}188.//===========================================================================//189.WORDxDate::GetLeapMonth

(WORDiLunarYear)190.{191.BYTE&flag=gLunarMonth[(iLunarYear-START_YEAR)/2];192.return(iLunarYear-START_YEAR)%2flag&0x0f:flag>>4;193.}194.//===========================================================================//195.LONGxDate::LunarMonthDays

(WORDiLunarYear,WORDiLunarMonth)196.{197.if(iLunarYearGetLeapMonth(iLunarYear)&&GetLeapMonth(iLunarYear))204.iBit--;205.206.if(gLunarMonthDay[iLunarYear-START_YEAR]&(1<

(WORDiLunarYear)219.{220./*221.WORDdays=348;//12*29222.intmonth=12;223.224.//如果iYear年有闰月,则为13个月225.if(gLanarMonth[iYear-START_YEAR])226.month++;227.228.//如果某月是三十天则days++229.while(month>=0&&(gLanarMonthDay[iYear-START_YEAR]&(1<<(16-month))))230.{231.days++;232.month--;233.}234.returndays;235.*/236.WORDdays=0;237.for(WORDi=1;i<=12;i++)238.{239.LONGtmp=LunarMonthDays(iLunarYear,i);240.days+=HIWORD(tmp);241.days+=LOWORD(tmp);242.}243.returndays;244.}245.//===========================================================================//246.void

xDate::FormatLunarYear(WORDiYear,char*pBuffer)247.{248.charszText1[]="甲乙丙丁戊己庚辛壬癸";249.charszText2[]="子丑寅卯辰巳午未申酉戌亥";250.charszText3[]="鼠牛虎免龙蛇马羊猴鸡狗猪";251.252.memcpy(pBuffer,szText1+((iYear-4)%10)*2,2);253.memcpy(pBuffer+2,szText2+((iYear-4)%12)*2,2);254.pBuffer[4]='';255.memcpy(pBuffer+5,szText3+((iYear-4)%12)*2,2);256.strcpy(pBuffer+7,"年");257.}258.//===========================================================================//259.voidxDate::FormatMonth

(WORDiMonth,char*pBuffer,BOOLbLunar)260.261.{262.if(!bLunar&&iMonth==1)263.{264.strcpy(pBuffer,"一月");265.return;266.}267.charszText[]="正二三四五六七八九十";268.if(iMonth<=10)269.{270.memcpy(pBuffer,"",2);271.memcpy(pBuffer+2,szText+(iMonth-1)*2,2);272.strcpy(pBuffer+4,"月");273.return;274.}275.if(iMonth==11)276.strcpy(pBuffer,"十一");277.else278.strcpy(pBuffer,"十二");279.strcpy(pBuffer+4,"月");280.281.282.}283.//===========================================================================//284.voidxDate::FormatLunarDay

(WORDiDay,char*pBuffer)285.{286.charszText1[]="初十廿三";287.charszText2[]="一二三四五六七八九十";288.if(iDay!=20&&iDay!=30)289.{290.memcpy(pBuffer,szText1+(iDay-1)/10*2,2);291.memcpy(pBuffer+2,szText2+((iDay-1)%10)*2,2);292.pBuffer[4]='/0';293.}294.else295.{296.memcpy(pBuffer,szText1+iDay/10*2,2);297.strcpy(pBuffer+2,szText2+18);298.}299.}300.301.302./******************************************************************************303.下面为阴历计算所需的数据,为节省存储空间,所以采用下面比较变态的存储方法.304.*******************************************************************************/305.//数组gLunarDay存入阴历1901年到2100年每年中的月天数信息,306.//阴历每月只能是29或30天,一年用12(或13)个二进

制位表示,对应位为1表30天,否则为29天307.WORDgLunarMonthDay[]=308.{309.//测试数据只有1901.1.1--2050.12.31310.0X4ae0,0Xa570,0X5268,0Xd260,0Xd950,0X6aa8,0X56a0,0X9ad0,

0X4ae8,0X4ae0,//1910311.0Xa4d8,0Xa4d0,0Xd250,0Xd548,0Xb550,0X56a0,0X96d0,0X95b0,0X49b8,0X49b0,

//1920312.0Xa4b0,0Xb258,0X6a50,0X6d40,0Xada8,0X2b60,0X9570,0X4978,0X4970,0X64b0,//1930313.

0Xd4a0,0Xea50,0X6d48,0X5ad0,0X2b60,0X9370,0X92e0,0Xc968,0Xc950,0Xd4a0,//1940314.0Xda50,0Xb550,

0X56a0,0Xaad8,0X25d0,0X92d0,0Xc958,0Xa950,0Xb4a8,0X6ca0,//1950315.0Xb550,0X55a8,0X4da0,0Xa5b0,

0X52b8,0X52b0,0Xa950,0Xe950,0X6aa0,0Xad50,//1960316.0Xab50,0X4b60,0Xa570,0Xa570,0X5260,0Xe930,

0Xd950,0X5aa8,0X56a0,0X96d0,//1970317.0X4ae8,0X4ad0,0Xa4d0,0Xd268,0Xd250,0Xd528,0Xb540,0Xb6a0,

0X96d0,0X95b0,//1980318.0X49b0,0Xa4b8,0Xa4b0,0Xb258,0X6a50,0X6d40,0Xada0,0Xab60,0X9370,0X4978,

//1990319.0X4970,0X64b0,0X6a50,0Xea50,0X6b28,0X5ac0,0Xab60,0X9368,0X92e0,0Xc960,//2000320.

0Xd4a8,0Xd4a0,0Xda50,0X5aa8,0X56a0,0Xaad8,0X25d0,0X92d0,0Xc958,0Xa950,//2010321.0Xb4a0,0Xb550,

0Xb550,0X55a8,0X4ba0,0Xa5b0,0X52b8,0X52b0,0Xa930,0X74a8,//2020322.0X6aa0,0Xad50,0X4da8,0X4b60,

0X9570,0Xa4e0,0Xd260,0Xe930,0Xd530,0X5aa0,//2030323.0X6b50,0X96d0,0X4ae8,0X4ad0,0Xa4d0,0Xd258,

0Xd250,0Xd520,0Xdaa0,0Xb5a0,//2040324.0X56d0,0X4ad8,0X49b0,0Xa4b8,0Xa4b0,0Xaa50,0Xb528,0X6d20,

0Xada0,0X55b0,//2050325.326.};327.328.//数组gLanarMonth存放阴历1901年到2050年闰月的月份,如没有则为0,每字节存两年329.BYTEgLunarMonth[]=330.{331.0X00,0X50,0X04,0X00,0X20,//1910332.0X60,0X05,0X00,0X20,0X70,//1920333.0X05,0X00,

0X40,0X02,0X06,//1930334.0X00,0X50,0X03,0X07,0X00,//1940335.0X60,0X04,0X00,0X20,0X70,

//1950336.0X05,0X00,0X30,0X80,0X06,//1960337.0X00,0X40,0X03,0X07,0X00,//1970338.

0X50,0X04,0X08,0X00,0X60,//1980339.0X04,0X0a,0X00,0X60,0X05,//1990340.0X00,0X30,0X80,

0X05,0X00,//2000341.0X40,0X02,0X07,0X00,0X50,//2010342.0X04,0X09,0X00,0X60,0X04,//2020

343.0X00,0X20,0X60,0X05,0X00,//2030344.0X30,0Xb0,0X06,0X00,0X50,//2040345.0X02,0X07,

0X00,0X50,0X03//2050346.};347.348.//数组gLanarHoliDay存放每年的二十四节气对应的阳历日期349.//每年的二十四节气对应的阳历日期几乎固定,平均分

布于十二个月中350.//1月2月3月4月5月6月351.//小寒大寒立春

雨水惊蛰春分清明谷雨立夏小满芒种夏至352.//7月8月9月10月11月

12月353.//小暑大暑立秋处暑白露秋分寒露霜降立冬小雪大雪冬至

354./*********************************************************************************355.节气无任何确定规律,所以只好存表,要节省空间,所以....356.下面这种存法实在是太变态了,你就将就着看吧357.**********************************************************************************/358.//数据格式说明:359.//如1901年的节气为360.//1月2月3月4月5月6月7月8月9月

10月11月12月361.//6,21,4,19,6,21,5,21,6,22,6,22,8,23,8,24,8,24,8,24,8,23,8,22

362.//9,6,11,4,9,6,10,6,9,7,9,7,7,8,7,9,7,9,7,9,7,8,7,15363.//上面第一行数据为每

月节气对应日期,15减去每月第一个节气,每月第二个节气减去15得第二行364.//这样每月两个节气对应数据都小于16,每月用一

个字节存放,高位存放第一个节气数据,低位存放365.//第二个节气的数据,可得下表366.367.BYTEgLunarHolDay[]=368.{369.0X96,0XB4,0X96,0XA6,0X97,0X97,0X78,0X79,0X79,0X69,0X78,0X77,//1901370.0X96,0XA4,

0X96,0X96,0X97,0X87,0X79,0X79,0X79,0X69,0X78,0X78,//1902371.0X96,0XA5,0X87,0X96,0X87,0X87,

0X79,0X69,0X69,0X69,0X78,0X78,//1903372.0X86,0XA5,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X79,

0X78,0X87,//1904373.0X96,0XB4,0X96,0XA6,0X97,0X97,0X78,0X79,0X79,0X69,0X78,0X77,//1905

374.0X96,0XA4,0X96,0X96,0X97,0X97,0X79,0X79,0X79,0X69,0X78,0X78,//1906375.0X96,0XA5,

0X87,0X96,0X87,0X87,0X79,0X69,0X69,0X69,0X78,0X78,//1907376.0X86,0XA5,0X96,0XA5,0X96,0X97,

0X88,0X78,0X78,0X69,0X78,0X87,//1908377.0X96,0XB4,0X96,0XA6,0X97,0X97,0X78,0X79,0X79,0X69,

0X78,0X77,//1909378.0X96,0XA4,0X96,0X96,0X97,0X97,0X79,0X79,0X79,0X69,0X78,0X78,//1910

379.0X96,0XA5,0X87,0X96,0X87,0X87,0X79,0X69,0X69,0X69,0X78,0X78,//1911380.0X86,0XA5,

0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X69,0X78,0X87,//1912381.0X95,0XB4,0X96,0XA6,0X97,0X97,

0X78,0X79,0X79,0X69,0X78,0X77,//1913382.0X96,0XB4,0X96,0XA6,0X97,0X97,0X79,0X79,0X79,0X69,

0X78,0X78,//1914383.0X96,0XA5,0X97,0X96,0X97,0X87,0X79,0X79,0X69,0X69,0X78,0X78,//1915

384.0X96,0XA5,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X79,0X77,0X87,//1916385.0X95,0XB4,

0X96,0XA6,0X96,0X97,0X78,0X79,0X78,0X69,0X78,0X87,//1917386.0X96,0XB4,0X96,0XA6,0X97,0X97,

0X79,0X79,0X79,0X69,0X78,0X77,//1918387.0X96,0XA5,0X97,0X96,0X97,0X87,0X79,0X79,0X69,0X69,

0X78,0X78,//1919388.0X96,0XA5,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X79,0X77,0X87,//1920

389.0X95,0XB4,0X96,0XA5,0X96,0X97,0X78,0X79,0X78,0X69,0X78,0X87,//1921390.0X96,0XB4,

0X96,0XA6,0X97,0X97,0X79,0X79,0X79,0X69,0X78,0X77,//1922391.0X96,0XA4,0X96,0X96,0X97,0X87,

0X79,0X79,0X69,0X69,0X78,0X78,//1923392.0X96,0XA5,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X79,

0X77,0X87,//1924393.0X95,0XB4,0X96,0XA5,0X96,0X97,0X78,0X79,0X78,0X69,0X78,0X87,//1925

394.0X96,0XB4,0X96,0XA6,0X97,0X97,0X78,0X79,0X79,0X69,0X78,0X77,//1926395.0X96,0XA4,

0X96,0X96,0X97,0X87,0X79,0X79,0X79,0X69,0X78,0X78,//1927396.0X96,0XA5,0X96,0XA5,0X96,0X96,

0X88,0X78,0X78,0X78,0X87,0X87,//1928397.0X95,0XB4,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X79,

0X77,0X87,//1929398.0X96,0XB4,0X96,0XA6,0X97,0X97,0X78,0X79,0X79,0X69,0X78,0X77,//1930

399.0X96,0XA4,0X96,0X96,0X97,0X87,0X79,0X79,0X79,0X69,0X78,0X78,//1931400.0X96,0XA5,

0X96,0XA5,0X96,0X96,0X88,0X78,0X78,0X78,0X87,0X87,//1932401.0X95,0XB4,0X96,0XA5,0X96,0X97,

0X88,0X78,0X78,0X69,0X78,0X87,//1933402.0X96,0XB4,0X96,0XA6,0X97,0X97,0X78,0X79,0X79,0X69,

0X78,0X77,//1934403.0X96,0XA4,0X96,0X96,0X97,0X97,0X79,0X79,0X79,0X69,0X78,0X78,//1935

404.0X96,0XA5,0X96,0XA5,0X96,0X96,0X88,0X78,0X78,0X78,0X87,0X87,//1936405.0X95,0XB4,

0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X69,0X78,0X87,//1937406.0X96,0XB4,0X96,0XA6,0X97,0X97,

0X78,0X79,0X79,0X69,0X78,0X77,//1938407.0X96,0XA4,0X96,0X96,0X97,0X97,0X79,0X79,0X79,0X69,

0X78,0X78,//1939408.0X96,0XA5,0X96,0XA5,0X96,0X96,0X88,0X78,0X78,0X78,0X87,0X87,//1940

409.0X95,0XB4,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X69,0X78,0X87,//1941410.0X96,0XB4,

0X96,0XA6,0X97,0X97,0X78,0X79,0X79,0X69,0X78,0X77,//1942411.0X96,0XA4,0X96,0X96,0X97,0X97,

0X79,0X79,0X79,0X69,0X78,0X78,//1943412.0X96,0XA5,0X96,0XA5,0XA6,0X96,0X88,0X78,0X78,0X78,

0X87,0X87,//1944413.0X95,0XB4,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X79,0X77,0X87,//1945

414.0X95,0XB4,0X96,0XA6,0X97,0X97,0X78,0X79,0X78,0X69,0X78,0X77,//1946415.0X96,0XB4,

0X96,0XA6,0X97,0X97,0X79,0X79,0X79,0X69,0X78,0X78,//1947416.0X96,0XA5,0XA6,0XA5,0XA6,0X96,

0X88,0X88,0X78,0X78,0X87,0X87,//1948417.0XA5,0XB4,0X96,0XA5,0X96,0X97,0X88,0X79,0X78,0X79,

0X77,0X87,//1949418.0X95,0XB4,0X96,0XA5,0X96,0X97,0X78,0X79,0X78,0X69,0X78,0X77,//1950

419.0X96,0XB4,0X96,0XA6,0X97,0X97,0X79,0X79,0X79,0X69,0X78,0X78,//1951420.0X96,0XA5,

0XA6,0XA5,0XA6,0X96,0X88,0X88,0X78,0X78,0X87,0X87,//1952421.0XA5,0XB4,0X96,0XA5,0X96,0X97,

0X88,0X78,0X78,0X79,0X77,0X87,//1953422.0X95,0XB4,0X96,0XA5,0X96,0X97,0X78,0X79,0X78,0X68,

0X78,0X87,//1954423.0X96,0XB4,0X96,0XA6,0X97,0X97,0X78,0X79,0X79,0X69,0X78,0X77,//1955

424.0X96,0XA5,0XA5,0XA5,0XA6,0X96,0X88,0X88,0X78,0X78,0X87,0X87,//1956425.0XA5,0XB4,

0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X79,0X77,0X87,//1957426.0X95,0XB4,0X96,0XA5,0X96,0X97,

0X88,0X78,0X78,0X69,0X78,0X87,//1958427.0X96,0XB4,0X96,0XA6,0X97,0X97,0X78,0X79,0X79,0X69,

0X78,0X77,//1959428.0X96,0XA4,0XA5,0XA5,0XA6,0X96,0X88,0X88,0X88,0X78,0X87,0X87,//1960

429.0XA5,0XB4,0X96,0XA5,0X96,0X96,0X88,0X78,0X78,0X78,0X87,0X87,//1961430.0X96,0XB4,

0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X69,0X78,0X87,//1962431.0X96,0XB4,0X96,0XA6,0X97,0X97,

0X78,0X79,0X79,0X69,0X78,0X77,//1963432.0X96,0XA4,0XA5,0XA5,0XA6,0X96,0X88,0X88,0X88,0X78,

0X87,0X87,//1964433.0XA5,0XB4,0X96,0XA5,0X96,0X96,0X88,0X78,0X78,0X78,0X87,0X87,//1965

434.0X95,0XB4,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X69,0X78,0X87,//1966435.0X96,0XB4,

0X96,0XA6,0X97,0X97,0X78,0X79,0X79,0X69,0X78,0X77,//1967436.0X96,0XA4,0XA5,0XA5,0XA6,0XA6,

0X88,0X88,0X88,0X78,0X87,0X87,//1968437.0XA5,0XB4,0X96,0XA5,0X96,0X96,0X88,0X78,0X78,0X78,

0X87,0X87,//1969438.0X95,0XB4,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X69,0X78,0X87,//1970

439.0X96,0XB4,0X96,0XA6,0X97,0X97,0X78,0X79,0X79,0X69,0X78,0X77,//1971440.0X96,0XA4,

0XA5,0XA5,0XA6,0XA6,0X88,0X88,0X88,0X78,0X87,0X87,//1972441.0XA5,0XB5,0X96,0XA5,0XA6,0X96,

0X88,0X78,0X78,0X78,0X87,0X87,//1973442.0X95,0XB4,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X69,

0X78,0X87,//1974443.0X96,0XB4,0X96,0XA6,0X97,0X97,0X78,0X79,0X78,0X69,0X78,0X77,//1975

444.0X96,0XA4,0XA5,0XB5,0XA6,0XA6,0X88,0X89,0X88,0X78,0X87,0X87,//1976445.0XA5,0XB4,

0X96,0XA5,0X96,0X96,0X88,0X88,0X78,0X78,0X87,0X87,//1977446.0X95,0XB4,0X96,0XA5,0X96,0X97,

0X88,0X78,0X78,0X79,0X78,0X87,//1978447.0X96,0XB4,0X96,0XA6,0X96,0X97,0X78,0X79,0X78,0X69,

0X78,0X77,//1979448.0X96,0XA4,0XA5,0XB5,0XA6,0XA6,0X88,0X88,0X88,0X78,0X87,0X87,//1980

449.0XA5,0XB4,0X96,0XA5,0XA6,0X96,0X88,0X88,0X78,0X78,0X77,0X87,//1981450.0X95,0XB4,

0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X79,0X77,0X87,//1982451.0X95,0XB4,0X96,0XA5,0X96,0X97,

0X78,0X79,0X78,0X69,0X78,0X77,//1983452.0X96,0XB4,0XA5,0XB5,0XA6,0XA6,0X87,0X88,0X88,0X78,

0X87,0X87,//1984453.0XA5,0XB4,0XA6,0XA5,0XA6,0X96,0X88,0X88,0X78,0X78,0X87,0X87,//1985

454.0XA5,0XB4,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X79,0X77,0X87,//1986455.0X95,0XB4,

0X96,0XA5,0X96,0X97,0X88,0X79,0X78,0X69,0X78,0X87,//1987456.0X96,0XB4,0XA5,0XB5,0XA6,0XA6,

0X87,0X88,0X88,0X78,0X87,0X86,//1988457.0XA5,0XB4,0XA5,0XA5,0XA6,0X96,0X88,0X88,0X88,0X78,

0X87,0X87,//1989458.0XA5,0XB4,0X96,0XA5,0X96,0X96,0X88,0X78,0X78,0X79,0X77,0X87,//1990

459.0X95,0XB4,0X96,0XA5,0X86,0X97,0X88,0X78,0X78,0X69,0X78,0X87,//1991460.0X96,0XB4,

0XA5,0XB5,0XA6,0XA6,0X87,0X88,0X88,0X78,0X87,0X86,//1992461.0XA5,0XB3,0XA5,0XA5,0XA6,0X96,

0X88,0X88,0X88,0X78,0X87,0X87,//1993462.0XA5,0XB4,0X96,0XA5,0X96,0X96,0X88,0X78,0X78,0X78,

0X87,0X87,//1994463.0X95,0XB4,0X96,0XA5,0X96,0X97,0X88,0X76,0X78,0X69,0X78,0X87,//1995

464.0X96,0XB4,0XA5,0XB5,0XA6,0XA6,0X87,0X88,0X88,0X78,0X87,0X86,//1996465.0XA5,0XB3,

0XA5,0XA5,0XA6,0XA6,0X88,0X88,0X88,0X78,0X87,0X87,//1997466.0XA5,0XB4,0X96,0XA5,0X96,0X96,

0X88,0X78,0X78,0X78,0X87,0X87,//1998467.0X95,0XB4,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X69,

0X78,0X87,//1999468.0X96,0XB4,0XA5,0XB5,0XA6,0XA6,0X87,0X88,0X88,0X78,0X87,0X86,//2000

469.0XA5,0XB3,0XA5,0XA5,0XA6,0XA6,0X88,0X88,0X88,0X78,0X87,0X87,//2001470.0XA5,0XB4,

0X96,0XA5,0X96,0X96,0X88,0X78,0X78,0X78,0X87,0X87,//2002471.0X95,0XB4,0X96,0XA5,0X96,0X97,

0X88,0X78,0X78,0X69,0X78,0X87,//2003472.0X96,0XB4,0XA5,0XB5,0XA6,0XA6,0X87,0X88,0X88,0X78,

0X87,0X86,//2004473.0XA5,0XB3,0XA5,0XA5,0XA6,0XA6,0X88,0X88,0X88,0X78,0X87,0X87,//2005

474.0XA5,0XB4,0X96,0XA5,0XA6,0X96,0X88,0X88,0X78,0X78,0X87,0X87,//2006475.0X95,0XB4,

0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X69,0X78,0X87,//2007476.0X96,0XB4,0XA5,0XB5,0XA6,0XA6,

0X87,0X88,0X87,0X78,0X87,0X86,//2008477.0XA5,0XB3,0XA5,0XB5,0XA6,0XA6,0X88,0X88,0X88,0X78,

0X87,0X87,//2009478.0XA5,0XB4,0X96,0XA5,0XA6,0X96,0X88,0X88,0X78,0X78,0X87,0X87,//2010

479.0X95,0XB4,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X79,0X78,0X87,//2011480.0X96,0XB4,

0XA5,0XB5,0XA5,0XA6,0X87,0X88,0X87,0X78,0X87,0X86,//2012481.0XA5,0XB3,0XA5,0XB5,0XA6,0XA6,

0X87,0X88,0X88,0X78,0X87,0X87,//2013482.0XA5,0XB4,0X96,0XA5,0XA6,0X96,0X88,0X88,0X78,0X78,

0X87,0X87,//2014483.0X95,0XB4,0X96,0XA5,0X96,0X97,0X88,0X78,0X78,0X79,0X77,0X87,//2015

484.0X95,0XB4,0XA5,0XB4,0XA5,0XA6,0X87,0X88,0X87,0X78,0X87,0X86,//2016485.0XA5,0XC3,

0XA5,0XB5,0XA6,0XA6,0X87,0X88,0X88,0X78,0X87,0X87,//2017486.0XA5,0XB4,0XA6,0XA5,0XA6,0X96,

0X88,0X88,0X78,0X78,0X87,0X87,//2018487.0XA5,0XB4,0X96,0XA5,0X96,0X96,0X88,0X78,0X78,0X79,

0X77,0X87,//2019488.0X95,0XB4,0XA5,0XB4,0XA5,0XA6,0X97,0X87,0X87,0X78,0X87,0X86,//2020

489.0XA5,0XC3,0XA5,0XB5,0XA6,0XA6,0X87,0X88,0X88,0X78,0X87,0X86,//2021490.0XA5,0XB4,

0XA5,0XA5,0XA6,0X96,0X88,0X88,0X88,0X78,0X87,0X87,//2022491.0XA5,0XB4,0X96,0XA5,0X96,0X96,

0X88,0X78,0X78,0X79,0X77,0X87,//2023492.0X95,0XB4,0XA5,0XB4,0XA5,0XA6,0X97,0X87,0X87,0X78,

0X87,0X96,//2024493.0XA5,0XC3,0XA5,0XB5,0XA6,0XA6,0X87,0X88,0X88,0X78,0X87,0X86,//2025

494.0XA5,0XB3,0XA5,0XA5,0XA6,0XA6,0X88,0X88,0X88,0X78,0X87,0X87,//2026495.0XA5,0XB4,

0X96,0XA5,0X96,0X96,0X88,0X78,0X78,0X78,0X87,0X87,//2027496.0X95,0XB4,0XA5,0XB4,0XA5,0XA6,

0X97,0X87,0X87,0X78,0X87,0X96,//2028497.0XA5,0XC3,0XA5,0XB5,0XA6,0XA6,0X87,0X88,0X88,0X78,

0X87,0X86,//2029498.0XA5,0XB3,0XA5,0XA5,0XA6,0XA6,0X88,0X88,0X88,0X78,0X87,0X87,//2030

499.0XA5,0XB4,0X96,0XA5,0X96,0X96,0X88,0X78,0X78,0X78,0X87,0X87,//2031500.0X95,0XB4,

0XA5,0XB4,0XA5,0XA6,0X97,0X87,0X87,0X78,0X87,0X96,//2032501.0XA5,0XC3,0XA5,0XB5,0XA6,0XA6,

0X88,0X88,0X88,0X78,0X87,0X86,//2033502.0XA5,0XB3,0XA5,0XA5,0XA6,0XA6,0X88,0X78,0X88,0X78,

0X87,0X87,//2034503.0XA5,0XB4,0X96,0XA5,0XA6,0X96,0X88,0X88,0X78,0X78,0X87,0X87,//2035

504.0X95,0XB4,0XA5,0XB4,0XA5,0XA6,0X97,0X87,0X87,0X78,0X87,0X96,//2036505.0XA5,0XC3,

0XA5,0XB5,0XA6,0XA6,0X87,0X88,0X88,0X78,0X87,0X86,//2037506.0XA5,0XB3,0XA5,0XA5,0XA6,0XA6,

0X88,0X88,0X88,0X78,0X87,0X87,//2038507.0XA5,0XB4,0X96,0XA5,0XA6,0X96,0X88,0X88,0X78,0X78,

0X87,0X87,//2039508.0X95,0XB4,0XA5,0XB4,0XA5,0XA6,0X97,0X87,0X87,0X78,0X87,0X96,//2040

509.0XA5,0XC3,0XA5,0XB5,0XA5,0XA6,0X87,0X88,0X87,0X78,0X87,0X86,//2041510.0XA5,0XB3,

0XA5,0XB5,0XA6,0XA6,0X88,0X88,0X88,0X78,0X87,0X87,//2042511.0XA5,0XB4,0X96,0XA5,0XA6,0X96,

0X88,0X88,0X78,0X78,0X87,0X87,//2043512.0X95,0XB4,0XA5,0XB4,0XA5,0XA6,0X97,0X87,0X87,0X88,

0X87,0X96,//2044513.0XA5,0XC3,0XA5,0XB4,0XA5,0XA6,0X87,0X88,0X87,0X78,0X87,0X86,//2045

514.0XA5,0XB3,0XA5,0XB5,0XA6,0XA6,0X87,0X88,0X88,0X78,0X87,0X87,//2046515.0XA5,0XB4,

0X96,0XA5,0XA6,0X96,0X88,0X88,0X78,0X78,0X87,0X87,//2047516.0X95,0XB4,0XA5,0XB4,0XA5,0XA5,

0X97,0X87,0X87,0X88,0X86,0X96,//2048517.0XA4,0XC3,0XA5,0XA5,0XA5,0XA6,0X97,0X87,0X87,0X78,

0X87,0X86,//2049518.0XA5,0XC3,0XA5,0XB5,0XA6,0XA6,0X87,0X88,0X78,0X78,0X87,0X87//2050

519.520.};(感谢baickl)

七、C语言(1):

-1921)/4+wCurDay+wMonthAdd[wCurMonth-1]-38;45.if((!(wCurYear%4))&&(wCurMonth>2))46.nTheDate=nTheDate+1;47.48./*--计算农历天干、地支、月、日---*/49.nIsEnd=0;50.m=0;51.while(nIsEnd!=1)52.{53.if(wNongliData[m]<4095)54.k=11;55.else56.k=12;57.n=k;58.while(n>=0)59.{60.//获取wNongliData(m)的第n个二进制位的值61.nBit=wNongliData[m];62.for(i=1;iwNongliData[m]/65536+1)88.wCurMonth=wCurMonth-1;89.}90.91./*--生成农历天干、地支、属相==>wNongli--*/92.wsprintf(szShuXiang,"%s",cShuXiang[((wCurYear-4)%60)%

12]);93.wsprintf(szNongli,"%s(%s%s)年",szShuXiang,cTianGan[((wCurYear-4)%60)%10],cDiZhi[((wCurYear-4)%60)%

12]);94.95./*--生成农历月、日==>wNongliDay--*/96.if(wCurMonth<1)97.wsprintf(szNongliDay,"闰%s",cMonName[-1*wCurMonth]);98.else99.strcpy(szNongliDay,cMonName[wCurMonth]);100.101.strcat(szNongliDay,"月");102.strcat(szNongliDay,cDayName[wCurDay]);103.returnstrcat(szNongli,szNongliDay);104.}(感谢CSDN作者3661512)

THE END
1.2007年1月8日还有多久18岁2007年1月8日出生的人已成年,无需计算剩余时间到18岁。分析:根据公历日期,2007年1月8日出生的人在https://china.findlaw.cn/ask/lawyer_66072722.html
2.2007年日历1、本可以可以查询任意日期的详细日期,包括农历,阴历,公历,阳历,佛历,道历等。 2、老黄历:可以查看日期的天干,地支,六曜,七政,彭祖百忌,十二神等信息。 3、佛历:也称为佛教历法,是根据佛陀涅槃的时间来计算的。在佛历中,每年的开始和结束与公历不完全一致,它有自己的纪年方法和节日安排。 4、道历:也称为道教https://www.502la.com/toolbox/wannianli.html?year=2007&ts=2007%E5%B9%B4%E6%97%A5%E5%8E%86
3.男2016年1月6日晚上21点20。公历。出生地河南省新乡市男2016年1月6日晚上21点20。公历。出生地河南省新乡市封丘县。真太阳时换算是。20点53分。希望老师http://www.gaoren.net/bbs/show-ZTM674AF45F56EA5.html
4.东方天气,东方天气预报未来7天海南东方天气mzcx.com每周查询东方天气最近更新时间:2024年11月26日8时52分 星期二 11/26 东方天气 海南东方天气预报 预报日期 最高温度 最低温度 日间天气 日间风向 日间风力 晚间天气 晚间风向 晚间风力 星期二 11/26 27℃ 20℃ 多云 东北风 4~5级 多云 东北风 4~5级 今天天气 天气 气温 降水 风速 风向 气压 湿度 https://mzcx.com/tianqi/hainan/dongfang/
5.2007.1108现在成年了吗服务地区-广东广州·电话-138-0294-5703 https://www.lawtime.cn/ask/question_34187613.html
6.阳历日期查询正月初二阳历日期揭秘,阳历几月几号是正月初二?一个像秋天 2024-11-30 19:36:01 没有更多内容 滇ICP备2023010045号-86 本文内容由互联网用户自发贡献,该文观点仅代表作者本人,因此内容不代表本站观点、本站不对文章中的任何观点负责,内容版权归原作者所有、内容只用于提供信息阅读,无任何商业用途。本站仅提供信http://m.lffenquanban.com/tags-67687.html
7.阳历2007年08月20日今年多少岁虚岁多少属什么生肖问:阳历2007年08月20日出生现在多少周岁? 答:阳历2007年08月20日出生现在是17周岁。 问:阳历2007年08月20日出生现在虚岁多少岁? 答:阳历2007年08月20日出生现在虚岁是18岁。 问:阳历2007年08月20日出生属什么生肖? 答:阳历2007年08月20日出生属猪。 问:阳历2007年08月20日出生是什么星座? 答:阳历https://www.bmcx.com/20070820__shijisuishu
8.2007年8月日历表2007年8月农历阳历一览表2020年日历 2019年日历 2018年日历 2017年日历 2016年日历 2015年日历 2014年日历 2013年日历 2012年日历 2011年日历 2010年日历 2009年日历 2008年日历 2007年日历 相关工具 黄道吉日 黄道吉时 二十四节气 节日大全 火车票订票 天数计算器 阴阳历转换 万年历查询 天气预报15天 生活常识 https://m.wannianli.tianqi.com/2007/08/277532.html
9.国历和农历怎么转换网友分享:你好,国历1997.13,转换为农历是1997年1月7日,星星期四;国历1997.1,转换为农历是1996年12月24日,星期六。 8、谁知道生日国历怎么换算成农历? 网友分享:应该是“公历”而非“国历”。公历1995年 5月9日,当天的农历日期为一九九五年四月初十日,或者称为乙亥年四月初十日。今年的农历是辛卯年。 https://www.105188.com/sh/618011.html
10.老黄历网老黄历查询择吉老黄历2024年12月3日黄历老黄历网提供:老黄历查询,黄历每日吉凶宜忌查询、农历查询、黄道吉日查询、时辰凶吉查询,提供免费搬家吉日查询、入宅吉日查询、结婚吉日查询、开业吉日查询等,以及生肖属相运程分析,免费占卜算命,算卦占卜等。2024年12月3日黄历,2024年12月3日黄历查询2024,2024年12月https://www.laohuangli.net/
11.1976年01月8日出生的人的性格命运公历生日公历生日1976年01月8日(更换出生时间)进行免费详细算命分析,预测性格命运,免费四柱八字周易紫微斗数、精准算命预测分析。http://mfsm.kvov.com/fx/1976-01-8/
12.2024年黄历结婚吉日结婚应该避开不适合的月份接亲网公历2024年1月2日 农历2024年十一月廿一 冲羊(己未)煞东 星期二 公历2024年1月6日 农历2024年十一月廿五 冲猪(癸亥)煞东 星期六 公历2024年1月7日 农历2024年十一月廿六 冲鼠(甲子)煞北 星期日 公历2024年1月9日 农历2024年十一月廿八 冲虎(丙寅)煞南 星期二 https://www.jieqinwang.com/baike/130820
13.张学良为什么在2002年公布他的历史?一般人过生日,有过公历的,有过农历的,不管是公历还是农历只有一天。按公历,张学良的生日是6月3日,按农历是四月十七。但1990年6月1日农历是五月初九,1991年5月31日是农历四月十八,6月1日是四月十九,1996年5月26日农历是四月初十,1999年5月30日农历是四月十六,2000年6月3日农历是五月初六。http://www.northnews.cn/p/1470025.html
14.2021年6月8日出生的孩子五行属什么缺什么?农历:辛丑年 四月 廿八 八字:辛丑 甲午 丁亥 五行:金土 木火 火水 纳音:壁上土 沙中金 屋上土 五行统计:1木,2火,1土,1金,1水。 根据上文可知,2021年6月8日出生的孩子五行什么都不缺。 2021年6月8日出生的孩子命运好不好? 公历生日:2021年06月08日,农历生日:二O二一年四月廿八日 https://www.k366.com/wuxing/122876.html
15.2007年8月21日2007年8月21日黄历查询2007年8月21日黄历 公历 公元2007年8月21日 星期二 农历 二零零七年 七月 初九 干支 丁亥年 戊申时刻2015年1月6日黄历 23:00-1:00 1:00-3:00 3:00-5:00 5:00-7:00 7:00-9:00 9:00https://m.chazidian.com/wnl_2007-8-21/?only_pc=1
16.农历癸卯年冬月廿七日是几月几日星期几,2024年1月8日农历多少2024.01.08万年历阴历阳历对照表,农历癸卯年 冬月廿七日是几月几日星期几,2024年1月8日农历多少 2024年1月8日干支查询,阴历癸卯年 冬月廿七日是什么干支日子,2024.01.08天干地支是什么日子,农历二〇二三年冬月廿七万年历在线查询,2024.01.08阴历阳历查询表,二〇二三https://huangli.100xgj.com/nongli/20240108
17.2007年8月1日黄历查询,二零零七年六月十九农历查询公历日期:公历2007年8月1日 星期三 农历日期:农历二零零七年 六月 十九号,丁亥年六月十九日 回历日期:1428年7月17日 干支历:丁亥年 丁未月 丁卯日 今日五行:炉中火 今天周几:星期三 值日星神:天德(吉星) 执位:成日 宜:结婚 嫁娶、纳采、开业 开市、旅行 旅游 出行、动土、上梁、搬家 移徙、迁入新宅 乔迁https://m.sanzang5.com/minfo/huangli2007/2007-8-1.html
18.2024年11月27日8时生辰八字查询,2024年11月27日8时喜用神查询2024年11月27日8时宝宝生辰八字查询,根据您输入的宝宝公历生日,智能转换成农历生日信息,并精准分析四柱八字,还有五行统计、纳音分析、五行同类异类分析、综合旺衰得分、八字强弱分析、八字喜用神分析等功能http://www.mfname.com/m/bazi/result.php?bir_year=2024&bir_month=11&bir_day=27&bir_hour=8