一个阴历阳历互相转化的类(c#源码)

最近郁闷地发现网上现有的相当一部分万年历上干支纪年的算法都是错误的。因为干支纪年是针对阴历而言的,而生肖属相又跟地支对应,所以元旦和春节之间那段时间在干支纪年法中应该归上一年,以阳历2007年2月9日为例,当日的阴历日期是二〇〇六年十二月廿二日,是丙戌年,即狗年,但是浏览一下目前的万年历,相当一部分都显示成了丁亥年,猪年,比较郁闷~~

然后就写了一个阴历阳历互相转化的类。

一个阴历阳历互相转化的类(c#源码)

相关代码如下:

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///中国日历信息实体类
一个阴历阳历互相转化的类(c#源码)
///cncxz(虫虫)2007-2-9
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicsealedclassChineseCalendarInfo
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
privateDateTimem_SolarDate;
一个阴历阳历互相转化的类(c#源码)
privateintm_LunarYear,m_LunarMonth,m_LunarDay;
一个阴历阳历互相转化的类(c#源码)
privateboolm_IsLeapMonth=false;
一个阴历阳历互相转化的类(c#源码)
privatestringm_LunarYearSexagenary=null,m_LunarYearAnimal=null;
一个阴历阳历互相转化的类(c#源码)
privatestringm_LunarYearText=null,m_LunarMonthText=null,m_LunarDayText=null;
一个阴历阳历互相转化的类(c#源码)
privatestringm_SolarWeekText=null,m_SolarConstellation=null,m_SolarBirthStone=null;
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
构造函数#region构造函数
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
publicChineseCalendarInfo()
一个阴历阳历互相转化的类(c#源码):
this(DateTime.Now.Date)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///从指定的阳历日期创建中国日历信息实体类
一个阴历阳历互相转化的类(c#源码)
///</summary>
一个阴历阳历互相转化的类(c#源码)
///<paramname="date">指定的阳历日期</param>

一个阴历阳历互相转化的类(c#源码)publicChineseCalendarInfo(DateTimedate)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)m_SolarDate
=date;
一个阴历阳历互相转化的类(c#源码)LoadFromSolarDate();
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
privatevoidLoadFromSolarDate()
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)m_IsLeapMonth
=false;
一个阴历阳历互相转化的类(c#源码)m_LunarYearSexagenary
=null;
一个阴历阳历互相转化的类(c#源码)m_LunarYearAnimal
=null;
一个阴历阳历互相转化的类(c#源码)m_LunarYearText
=null;
一个阴历阳历互相转化的类(c#源码)m_LunarMonthText
=null;
一个阴历阳历互相转化的类(c#源码)m_LunarDayText
=null;
一个阴历阳历互相转化的类(c#源码)m_SolarWeekText
=null;
一个阴历阳历互相转化的类(c#源码)m_SolarConstellation
=null;
一个阴历阳历互相转化的类(c#源码)m_SolarBirthStone
=null;
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)m_LunarYear
=calendar.GetYear(m_SolarDate);
一个阴历阳历互相转化的类(c#源码)m_LunarMonth
=calendar.GetMonth(m_SolarDate);
一个阴历阳历互相转化的类(c#源码)
intleapMonth=calendar.GetLeapMonth(m_LunarYear);
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
if(leapMonth==m_LunarMonth)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)m_IsLeapMonth
=true;
一个阴历阳历互相转化的类(c#源码)m_LunarMonth
-=1;
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
elseif(leapMonth>0&&leapMonth<m_LunarMonth)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)m_LunarMonth
-=1;
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)m_LunarDay
=calendar.GetDayOfMonth(m_SolarDate);
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)CalcConstellation(m_SolarDate,
outm_SolarConstellation,outm_SolarBirthStone);
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
#endregion

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
日历属性#region日历属性
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阳历日期
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicDateTimeSolarDate
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
get一个阴历阳历互相转化的类(c#源码){returnm_SolarDate;}
一个阴历阳历互相转化的类(c#源码)
set
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
if(m_SolarDate.Equals(value))
一个阴历阳历互相转化的类(c#源码)
return;
一个阴历阳历互相转化的类(c#源码)m_SolarDate
=value;
一个阴历阳历互相转化的类(c#源码)LoadFromSolarDate();
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///星期几
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicstringSolarWeekText
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
get
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
if(string.IsNullOrEmpty(m_SolarWeekText))
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
inti=(int)m_SolarDate.DayOfWeek;
一个阴历阳历互相转化的类(c#源码)m_SolarWeekText
=ChineseWeekName[i];
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
returnm_SolarWeekText;
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阳历星座
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicstringSolarConstellation
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
get一个阴历阳历互相转化的类(c#源码){returnm_SolarConstellation;}
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阳历诞生石
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicstringSolarBirthStone
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
get一个阴历阳历互相转化的类(c#源码){returnm_SolarBirthStone;}
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阴历年份
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicintLunarYear
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
get一个阴历阳历互相转化的类(c#源码){returnm_LunarYear;}
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阴历月份
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicintLunarMonth
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
get一个阴历阳历互相转化的类(c#源码){returnm_LunarMonth;}
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///是否阴历闰月
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicboolIsLeapMonth
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
get一个阴历阳历互相转化的类(c#源码){returnm_IsLeapMonth;}
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阴历月中日期
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicintLunarDay
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
get一个阴历阳历互相转化的类(c#源码){returnm_LunarDay;}
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阴历年干支
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicstringLunarYearSexagenary
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
get
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
if(string.IsNullOrEmpty(m_LunarYearSexagenary))
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
inty=calendar.GetSexagenaryYear(this.SolarDate);
一个阴历阳历互相转化的类(c#源码)m_LunarYearSexagenary
=CelestialStem.Substring((y-1)%10,1)+TerrestrialBranch.Substring((y-1)%12,1);
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
returnm_LunarYearSexagenary;
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阴历年生肖
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicstringLunarYearAnimal
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
get
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
if(string.IsNullOrEmpty(m_LunarYearAnimal))
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
inty=calendar.GetSexagenaryYear(this.SolarDate);
一个阴历阳历互相转化的类(c#源码)m_LunarYearAnimal
=Animals.Substring((y-1)%12,1);
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
returnm_LunarYearAnimal;
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阴历年文本
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicstringLunarYearText
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
get
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
if(string.IsNullOrEmpty(m_LunarYearText))
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)m_LunarYearText
=Animals.Substring(calendar.GetSexagenaryYear(newDateTime(m_LunarYear,1,1))%12-1,1);
一个阴历阳历互相转化的类(c#源码)StringBuildersb
=newStringBuilder();
一个阴历阳历互相转化的类(c#源码)
intyear=this.LunarYear;
一个阴历阳历互相转化的类(c#源码)
intd;
一个阴历阳历互相转化的类(c#源码)
do
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)d
=year%10;
一个阴历阳历互相转化的类(c#源码)sb.Insert(
0,ChineseNumber[d]);
一个阴历阳历互相转化的类(c#源码)year
=year/10;
一个阴历阳历互相转化的类(c#源码)}
while(year>0);
一个阴历阳历互相转化的类(c#源码)m_LunarYearText
=sb.ToString();
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
returnm_LunarYearText;
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阴历月文本
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicstringLunarMonthText
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
get
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
if(string.IsNullOrEmpty(m_LunarMonthText))
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)m_LunarMonthText
=(this.IsLeapMonth?"":"")+ChineseMonthName[this.LunarMonth-1];
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
returnm_LunarMonthText;
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阴历月中日期文本
一个阴历阳历互相转化的类(c#源码)
///</summary>

一个阴历阳历互相转化的类(c#源码)publicstringLunarDayText
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
get
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
if(string.IsNullOrEmpty(m_LunarDayText))
一个阴历阳历互相转化的类(c#源码)m_LunarDayText
=ChineseDayName[this.LunarDay-1];
一个阴历阳历互相转化的类(c#源码)
returnm_LunarDayText;
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
#endregion

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///根据指定阳历日期计算星座&诞生石
一个阴历阳历互相转化的类(c#源码)
///</summary>
一个阴历阳历互相转化的类(c#源码)
///<paramname="date">指定阳历日期</param>
一个阴历阳历互相转化的类(c#源码)
///<paramname="constellation">星座</param>
一个阴历阳历互相转化的类(c#源码)
///<paramname="birthstone">诞生石</param>

一个阴历阳历互相转化的类(c#源码)publicstaticvoidCalcConstellation(DateTimedate,outstringconstellation,outstringbirthstone)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
inti=Convert.ToInt32(date.ToString("MMdd"));
一个阴历阳历互相转化的类(c#源码)
intj;
一个阴历阳历互相转化的类(c#源码)
if(i>=321&&i<=419)
一个阴历阳历互相转化的类(c#源码)j
=0;
一个阴历阳历互相转化的类(c#源码)
elseif(i>=420&&i<=520)
一个阴历阳历互相转化的类(c#源码)j
=1;
一个阴历阳历互相转化的类(c#源码)
elseif(i>=521&&i<=621)
一个阴历阳历互相转化的类(c#源码)j
=2;
一个阴历阳历互相转化的类(c#源码)
elseif(i>=622&&i<=722)
一个阴历阳历互相转化的类(c#源码)j
=3;
一个阴历阳历互相转化的类(c#源码)
elseif(i>=723&&i<=822)
一个阴历阳历互相转化的类(c#源码)j
=4;
一个阴历阳历互相转化的类(c#源码)
elseif(i>=823&&i<=922)
一个阴历阳历互相转化的类(c#源码)j
=5;
一个阴历阳历互相转化的类(c#源码)
elseif(i>=923&&i<=1023)
一个阴历阳历互相转化的类(c#源码)j
=6;
一个阴历阳历互相转化的类(c#源码)
elseif(i>=1024&&i<=1121)
一个阴历阳历互相转化的类(c#源码)j
=7;
一个阴历阳历互相转化的类(c#源码)
elseif(i>=1122&&i<=1221)
一个阴历阳历互相转化的类(c#源码)j
=8;
一个阴历阳历互相转化的类(c#源码)
elseif(i>=1222||i<=119)
一个阴历阳历互相转化的类(c#源码)j
=9;
一个阴历阳历互相转化的类(c#源码)
elseif(i>=120&&i<=218)
一个阴历阳历互相转化的类(c#源码)j
=10;
一个阴历阳历互相转化的类(c#源码)
elseif(i>=219&&i<=320)
一个阴历阳历互相转化的类(c#源码)j
=11;
一个阴历阳历互相转化的类(c#源码)
else
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)constellation
="未知星座";
一个阴历阳历互相转化的类(c#源码)birthstone
="未知诞生石";
一个阴历阳历互相转化的类(c#源码)
return;
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)constellation
=Constellations[j];
一个阴历阳历互相转化的类(c#源码)birthstone
=BirthStones[j];
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
星座划分#region星座划分
一个阴历阳历互相转化的类(c#源码)
//白羊座:3月21日------4月19日诞生石:钻石
一个阴历阳历互相转化的类(c#源码)
//金牛座:4月20日------5月20日诞生石:蓝宝石
一个阴历阳历互相转化的类(c#源码)
//双子座:5月21日------6月21日诞生石:玛瑙
一个阴历阳历互相转化的类(c#源码)
//巨蟹座:6月22日------7月22日诞生石:珍珠
一个阴历阳历互相转化的类(c#源码)
//狮子座:7月23日------8月22日诞生石:红宝石
一个阴历阳历互相转化的类(c#源码)
//处女座:8月23日------9月22日诞生石:红条纹玛瑙
一个阴历阳历互相转化的类(c#源码)
//天秤座:9月23日------10月23日诞生石:蓝宝石
一个阴历阳历互相转化的类(c#源码)
//天蝎座:10月24日-----11月21日诞生石:猫眼石
一个阴历阳历互相转化的类(c#源码)
//射手座:11月22日-----12月21日诞生石:黄宝石
一个阴历阳历互相转化的类(c#源码)
//摩羯座:12月22日-----1月19日诞生石:土耳其玉
一个阴历阳历互相转化的类(c#源码)
//水瓶座:1月20日-----2月18日诞生石:紫水晶
一个阴历阳历互相转化的类(c#源码)
//双鱼座:2月19日------3月20日诞生石:月长石,血石
一个阴历阳历互相转化的类(c#源码)
#endregion

一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
阴历转阳历#region阴历转阳历
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///获取指定年份春节当日(正月初一)的阳历日期
一个阴历阳历互相转化的类(c#源码)
///</summary>
一个阴历阳历互相转化的类(c#源码)
///<paramname="year">指定的年份</param>

一个阴历阳历互相转化的类(c#源码)privatestaticDateTimeGetLunarNewYearDate(intyear)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)DateTimedt
=newDateTime(year,1,1);
一个阴历阳历互相转化的类(c#源码)
intcnYear=calendar.GetYear(dt);
一个阴历阳历互相转化的类(c#源码)
intcnMonth=calendar.GetMonth(dt);
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
intnum1=0;
一个阴历阳历互相转化的类(c#源码)
intnum2=calendar.IsLeapYear(cnYear)?13:12;
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
while(num2>=cnMonth)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)num1
+=calendar.GetDaysInMonth(cnYear,num2--);
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)num1
=num1-calendar.GetDayOfMonth(dt)+1;
一个阴历阳历互相转化的类(c#源码)
returndt.AddDays(num1);
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阴历转阳历
一个阴历阳历互相转化的类(c#源码)
///</summary>
一个阴历阳历互相转化的类(c#源码)
///<paramname="year">阴历年</param>
一个阴历阳历互相转化的类(c#源码)
///<paramname="month">阴历月</param>
一个阴历阳历互相转化的类(c#源码)
///<paramname="day">阴历日</param>
一个阴历阳历互相转化的类(c#源码)
///<paramname="IsLeapMonth">是否闰月</param>

一个阴历阳历互相转化的类(c#源码)publicstaticDateTimeGetDateFromLunarDate(intyear,intmonth,intday,boolIsLeapMonth)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
if(year<1902||year>2100)
一个阴历阳历互相转化的类(c#源码)
thrownewException("只支持1902~2100期间的农历年");
一个阴历阳历互相转化的类(c#源码)
if(month<1||month>12)
一个阴历阳历互相转化的类(c#源码)
thrownewException("表示月份的数字必须在1~12之间");
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
if(day<1||day>calendar.GetDaysInMonth(year,month))
一个阴历阳历互相转化的类(c#源码)
thrownewException("农历日期输入有误");
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
intnum1=0,num2=0;
一个阴历阳历互相转化的类(c#源码)
intleapMonth=calendar.GetLeapMonth(year);
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
if(((leapMonth==month+1)&&IsLeapMonth)||(leapMonth>0&&leapMonth<=month))
一个阴历阳历互相转化的类(c#源码)num2
=month;
一个阴历阳历互相转化的类(c#源码)
else
一个阴历阳历互相转化的类(c#源码)num2
=month-1;
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
while(num2>0)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)num1
+=calendar.GetDaysInMonth(year,num2--);
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)DateTimedt
=GetLunarNewYearDate(year);
一个阴历阳历互相转化的类(c#源码)
returndt.AddDays(num1+day-1);
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///阴历转阳历
一个阴历阳历互相转化的类(c#源码)
///</summary>
一个阴历阳历互相转化的类(c#源码)
///<paramname="date">阴历日期</param>
一个阴历阳历互相转化的类(c#源码)
///<paramname="IsLeapMonth">是否闰月</param>

一个阴历阳历互相转化的类(c#源码)publicstaticDateTimeGetDateFromLunarDate(DateTimedate,boolIsLeapMonth)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
returnGetDateFromLunarDate(date.Year,date.Month,date.Day,IsLeapMonth);
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
#endregion

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
从阴历创建日历#region从阴历创建日历
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///从阴历创建日历实体
一个阴历阳历互相转化的类(c#源码)
///</summary>
一个阴历阳历互相转化的类(c#源码)
///<paramname="year">阴历年</param>
一个阴历阳历互相转化的类(c#源码)
///<paramname="month">阴历月</param>
一个阴历阳历互相转化的类(c#源码)
///<paramname="day">阴历日</param>
一个阴历阳历互相转化的类(c#源码)
///<paramname="IsLeapMonth">是否闰月</param>

一个阴历阳历互相转化的类(c#源码)publicstaticChineseCalendarInfoFromLunarDate(intyear,intmonth,intday,boolIsLeapMonth)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)DateTimedt
=GetDateFromLunarDate(year,month,day,IsLeapMonth);
一个阴历阳历互相转化的类(c#源码)
returnnewChineseCalendarInfo(dt);
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///从阴历创建日历实体
一个阴历阳历互相转化的类(c#源码)
///</summary>
一个阴历阳历互相转化的类(c#源码)
///<paramname="date">阴历日期</param>
一个阴历阳历互相转化的类(c#源码)
///<paramname="IsLeapMonth">是否闰月</param>

一个阴历阳历互相转化的类(c#源码)publicstaticChineseCalendarInfoFromLunarDate(DateTimedate,boolIsLeapMonth)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
returnFromLunarDate(date.Year,date.Month,date.Day,IsLeapMonth);
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
/**////<summary>
一个阴历阳历互相转化的类(c#源码)
///从阴历创建日历实体
一个阴历阳历互相转化的类(c#源码)
///</summary>
一个阴历阳历互相转化的类(c#源码)
///<paramname="date">表示阴历日期的8位数字,例如:20070209</param>
一个阴历阳历互相转化的类(c#源码)
///<paramname="IsLeapMonth">是否闰月</param>

一个阴历阳历互相转化的类(c#源码)publicstaticChineseCalendarInfoFromLunarDate(stringdate,boolIsLeapMonth)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)Regexrg
=newSystem.Text.RegularExpressions.Regex(@"^/d{7}(/d)$");
一个阴历阳历互相转化的类(c#源码)Matchmc
=rg.Match(date);
一个阴历阳历互相转化的类(c#源码)
if(!mc.Success)
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
thrownewException("日期字符串输入有误!");
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)DateTimedt
=DateTime.Parse(string.Format("{0}-{1}-{2}",date.Substring(0,4),date.Substring(4,2),date.Substring(6,2)));
一个阴历阳历互相转化的类(c#源码)
returnFromLunarDate(dt,IsLeapMonth);
一个阴历阳历互相转化的类(c#源码)}

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
#endregion

一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
privatestaticChineseLunisolarCalendarcalendar=newChineseLunisolarCalendar();
一个阴历阳历互相转化的类(c#源码)
publicconststringChineseNumber="〇一二三四五六七八九";
一个阴历阳历互相转化的类(c#源码)
publicconststringCelestialStem="甲乙丙丁戊己庚辛壬癸";
一个阴历阳历互相转化的类(c#源码)
publicconststringTerrestrialBranch="子丑寅卯辰巳午未申酉戌亥";
一个阴历阳历互相转化的类(c#源码)
publicconststringAnimals="鼠牛虎兔龙蛇马羊猴鸡狗猪";
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
publicstaticreadonlystring[]ChineseWeekName=newstring[]一个阴历阳历互相转化的类(c#源码){"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
publicstaticreadonlystring[]ChineseDayName=newstring[]一个阴历阳历互相转化的类(c#源码){
一个阴历阳历互相转化的类(c#源码)
"初一","初二","初三","初四","初五","初六","初七","初八","初九","初十",
一个阴历阳历互相转化的类(c#源码)
"十一","十二","十三","十四","十五","十六","十七","十八","十九","二十",
一个阴历阳历互相转化的类(c#源码)
"廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"}
;
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
publicstaticreadonlystring[]ChineseMonthName=newstring[]一个阴历阳历互相转化的类(c#源码){"","","","","","","","","","","十一","十二"};
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
publicstaticreadonlystring[]Constellations=newstring[]一个阴历阳历互相转化的类(c#源码){"白羊座","金牛座","双子座","巨蟹座","狮子座","处女座","天秤座","天蝎座","射手座","摩羯座","水瓶座","双鱼座"};
一个阴历阳历互相转化的类(c#源码)一个阴历阳历互相转化的类(c#源码)
publicstaticreadonlystring[]BirthStones=newstring[]一个阴历阳历互相转化的类(c#源码){"钻石","蓝宝石","玛瑙","珍珠","红宝石","红条纹玛瑙","蓝宝石","猫眼石","黄宝石","土耳其玉","紫水晶","月长石,血石"};
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)
一个阴历阳历互相转化的类(c#源码)}

工程文件下载:http://www.cnblogs.com/Files/cncxz/ChineseCalendar.rar