计算每年元旦干支,已知1899年为己巳。
平年 干合支冲减一。
闰年 干合加一支冲。则1900年为平年,元旦日干支
为甲戌。
//根据输入的公历年和元旦干支计算下一年元旦干支
// 平年 干合支冲减一
// 闰年 干合加一支冲
// solarYear - 当前公历年
// 返回下一年1月1日元旦的干支
public string GetSolarNewYearDayGanZhi(int solarYear, string ganzhi)
{
int gan, zhi;
gan = GanToNum(ganzhi.Substring(0, 1)); //取天干
zhi = ZhiToNum(ganzhi.Substring(1, 1)); //取地支
//平年
if (!IsNotLeepYear(solarYear))
{
gan += 5;
zhi += 5;
gan = Math.Abs(gan%10);
zhi = Math.Abs(zhi % 12);
}
else if (IsNotLeepYear(solarYear))
{
gan += 6;
zhi += 6;
gan = Math.Abs(gan % 10);
zhi = Math.Abs(zhi % 12);
}
string rel = NumToGan(gan) + NumToZhi(zhi);
return rel;
}
//输出所有农历每月初一干支到文件
//检测某公历年是否为闰年
//能被4整除,或能被400整除是闰年
public bool IsNotLeepYear(int solarYear)
{
//被400整除闰年
if (solarYear % 400 == 0)
return true;
else
if ((solarYear % 4 == 0) && (solarYear % 100 != 0))
{
return true;
}
else
return false;
return false;
}