📄 date.cs
字号:
return (iMonth - 1) * 2 + 1;
}
else
{
return (iMonth - 1) * 2;
}
}
else
{
return -1;
}
}
/// <summary>
/// 格式化节气序号为节气名称。
/// </summary>
/// <param name="SolarTermIndex">节气序号。</param>
/// <returns>节气名称。</returns>
private string FormatSolarTerm(int SolarTermIndex)
{
//string[] stroe = {"小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至"};
if (SolarTermIndex <= this.LunarHolDayName.Length && SolarTermIndex >= 0)
return this.LunarHolDayName[SolarTermIndex];
return "";
}
#endregion
#region 年月日
/// <summary>
/// 格式化阴历月份。
/// </summary>
/// <param name="iYear">年份。</param>
/// <returns>干支记年。</returns>
private string FormatLunarYear(int iYear)
{
string strG = "甲乙丙丁戊己庚辛壬癸";
string strZ = "子丑寅卯辰巳午未申酉戌亥";
return strG.Substring((iYear - 4) % 10, 1) + strZ.Substring((iYear - 4) % 12, 1);
}
/// <summary>
/// 格式化阴历年份。
/// </summary>
/// <param name="iYear">年份。</param>
/// <returns>生肖。</returns>
private string FormatAnimalYear(int iYear)
{
string strSX = "鼠牛虎免龙蛇马羊猴鸡狗猪";
return strSX.Substring((iYear - 4) % 12, 1);
}
/// <summary>
/// 格式化阴历月份。
/// </summary>
/// <param name="iMonth">月份。</param>
/// <returns>中文月份。</returns>
public string FormatLunarMonth(int iMonth)
{
string szText = "正二三四五六七八九十";
if (iMonth <= 10) return szText.Substring(iMonth - 1, 1) + "月";
if (iMonth == 11) return "十一月";
if (iMonth == 12) return "十二月";
return "";
}
/// <summary>
/// 格式化阴历日子。
/// </summary>
/// <param name="iDay">日子。</param>
/// <returns>中文日子。</returns>
public string FormatLunarDay(int iDay)
{
string szText1 = "初十廿三";
string szText2 = "一二三四五六七八九十";
string strDay = "";
if (iDay != 20 && iDay != 30)
{
try
{
strDay = szText1.Substring((iDay - 1) / 10, 1);
strDay = strDay + szText2.Substring((iDay - 1) % 10, 1);
}
catch (Exception)
{
}
}
else
{
strDay = szText1.Substring((iDay / 10), 1);
strDay = strDay + "十";
}
return strDay;
}
#endregion
#region OutPut
/// <summary>阴历日期,以LunarDate(年日月)形式表示。</summary>
public LunarDate LunarDate
{
get
{
if (this.m_LunarDate == null)
{
ushort iYear, iMonth, iDay;
TimeSpan ts = m_Date - (new DateTime(START_YEAR, 1, 1));
this.CalcLunarDate(out iYear, out iMonth, out iDay, (uint)(ts.Days));
this.m_LunarDate = new LunarDate(iYear, iMonth, iDay);
}
return this.m_LunarDate;
}
}
/// <summary>阴历干支记年。</summary>
public string LunarYear
{
get
{
if (m_LunarYear == "")
this.m_LunarYear = this.FormatLunarYear(this.LunarDate.Year);
return this.m_LunarYear;
}
}
/// <summary>阴历生肖。</summary>
public string Animal
{
get
{
if (m_Animal == "")
this.m_Animal = this.FormatAnimalYear(this.LunarDate.Year);
return this.m_Animal;
}
}
/// <summary>格式化后的阴历月份。</summary>
public string LunarMonth
{
get
{
if (this.m_LunarMonth == "")
this.m_LunarMonth = this.FormatLunarMonth(ushort.Parse(this.LunarDate.Month.ToString()));
return this.m_LunarMonth;
}
}
/// <summary>格式化后的阴历日子。</summary>
public string LunarDay
{
get
{
if (this.m_LunarDay == "")
this.m_LunarDay = this.FormatLunarDay(ushort.Parse(this.LunarDate.Day.ToString()));
return this.m_LunarDay;
}
}
/// <summary>格式化后的阴历节气。</summary>
public string SolarTerm
{
get
{
if (this.m_SolarTerm == "")
this.m_SolarTerm = this.FormatSolarTerm(this.GetSolarTermIndex());
return this.m_SolarTerm;
}
}
/// <summary>格式化后的星座。</summary>
public string Constellation
{
get
{
if (this.m_Constellation == "")
this.m_Constellation = this.FormatConstellation(this.GetConstellationIndex());
return this.m_Constellation;
}
}
#endregion
}
public class LunarDate
{
private int _y, _m, _d;
private string lunardate = "";
private string lunarmonth = "", lunarday = "", lunaryear = "";
private string solarterm = "", animal = "";
public LunarDate(DateTime dt)
{
LunarDateClass ldc = new LunarDateClass(dt);
this.lunarday = ldc.LunarDay;
this.lunarmonth = ldc.LunarMonth;
this.lunaryear = ldc.LunarYear;
this.solarterm = ldc.SolarTerm;
this.animal = ldc.Animal;
this.lunardate = this.lunaryear + "(" + this.animal + ")年" + this.lunarmonth + this.lunarday + (this.solarterm == "" ? "" : " " + this.solarterm);
this._y = ldc.LunarDate.Year;
this._m = ldc.LunarDate.Month;
this._d = ldc.LunarDate.Day;
}
public LunarDate(int y, int m, int d)
{
this._y = y;
this._m = m;
this._d = d;
}
public int Year
{
get { return this._y; }
}
public int Month
{
get { return this._m; }
}
public int Day
{
get { return this._d; }
}
public string LunarDay
{
get
{
return this.lunarday;
}
}
public string LunarMonth
{
get
{
return this.lunarmonth;
}
}
public string LunarYear
{
get
{
return this.lunaryear;
}
}
public string SolarTerm
{
get
{
return this.solarterm;
}
}
public string Animal
{
get
{
return this.animal;
}
}
public new string ToString()
{
return this.lunardate;
}
}
#endregion
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -