/// <summary>
/// 农历日历
/// </summary>
private static ChineseLunisolarCalendar calendar = new ChineseLunisolarCalendar();
/// <summary>
/// 中文数字
/// </summary>
private static string ChineseNumber = "〇一二三四五六七八九";
/// <summary>
/// 甲子
/// </summary>
public const string CelestialStem = "甲乙丙丁戊己庚辛壬癸";
/// <summary>
/// 阴历年干支
/// </summary>
public const string TerrestrialBranch = "子丑寅卯辰巳午未申酉戌亥";
/// <summary>
/// 属相
/// </summary>
public const string ShuXiang = "鼠牛虎兔龙蛇马羊猴鸡狗猪";
/// <summary>
/// 甲子记年法
/// </summary>
/// <param name="time"></param>
/// <returns></returns>
public static string GetStemBranch(DateTime time)
{
string stemBranch = string.Empty;
int sexagenaryYear = calendar.GetSexagenaryYear(time);//与指定日期对应的甲子(60 年)循环中的年
if (sexagenaryYear % 10 == 0 && sexagenaryYear % 12 == 0)
{
stemBranch = CelestialStem.Substring(sexagenaryYear % 10+9, 1) + TerrestrialBranch.Substring(sexagenaryYear % 12 +11, 1);
}
else if (sexagenaryYear % 10 != 0 && sexagenaryYear % 12 == 0)
{
stemBranch = CelestialStem.Substring(sexagenaryYear % 10 - 1, 1) + TerrestrialBranch.Substring(sexagenaryYear % 12 +11, 1);
}
else if (sexagenaryYear % 10 == 0 && sexagenaryYear % 12 != 0)
{
stemBranch = CelestialStem.Substring(sexagenaryYear % 10+9, 1) + TerrestrialBranch.Substring(sexagenaryYear % 12 -1, 1);
}
else
{
stemBranch = CelestialStem.Substring(sexagenaryYear % 10 - 1, 1) + TerrestrialBranch.Substring(sexagenaryYear % 12 - 1, 1);
}
return stemBranch;
}
/// <summary>
/// 生肖
/// </summary>
/// <param name="time"></param>
/// <returns></returns>
public static string GetSX(DateTime time)
{
string SX = string.Empty;
int sexagenaryYear = calendar.GetSexagenaryYear(time);//与指定日期对应的甲子(60 年)循环中的年
if (sexagenaryYear % 12 == 0)
{
SX = ShuXiang.Substring(sexagenaryYear % 12 + 11, 1);
}
else
{
SX = ShuXiang.Substring(sexagenaryYear % 12 - 1, 1);
}
return SX;
}
/// <summary>
///
/// </summary>
public GZForm()
{
InitializeComponent();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void GZForm_Load(object sender, EventArgs e)
{
this.label1.Text = "农历今天是:" + GetStemBranch(DateTime.Now) + "年";
this.label2.Text = "农历今生肖是:" + GetSX(DateTime.Now);
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
this.label1.Text = "农历是:" + GetStemBranch(this.dateTimePicker1.Value) + "年";
this.label2.Text = "生肖是:" + GetSX(this.dateTimePicker1.Value);
}
}