using System;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321725.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321725.gif)
public class LunarDate
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321844.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321899.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
public const int MAX_YEAR = 2011;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
public const int MIN_YEAR = 1900;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
static readonly string[] lookupTable = new string[]
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0100101101101080131", "0100101011100000219", "1010010101110000208",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0101001001101050129", "1101001001100000216", "1101100101010000204",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0110101010101040125", "0101011010100000213", "1001101011010000202",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0100101011101020122", "0100101011100000210", "1010010011011060130",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1010010011010000218", "1101001001010000206", "1101010101001050126",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1011010101010000214", "0101011010100000204", "1001011011010020123",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1001010110110000211", "0100100110111070201", "0100100110110000220",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1010010010110000208", "1011001001011050128", "0110101001010000216",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0110110101000000205", "1010110110101040124", "0010101101100000213",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1001010101110000202", "0100100101111020123", "0100100101110000210",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0110010010110060130", "1101010010100000217", "1110101001010000206",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0110110101001050126", "0101101011010000214", "0010101101100000204",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
&nb "1001001101110030124", "1001001011100000211", "1100100101101070131",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1100100101010000219", "1101010010100000208", "1101101001010060127",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1011010101010000215", "0101011010100000205", "1010101011011040125",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0010010111010000213", "1001001011010000202", "1100100101011020122",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1010100101010000210", "1011010010101070129", "0110110010100000217",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1011010101010000206", "0101010110101050127", "0100110110100000214",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1010010110110000203", "0101001010111030124", "0101001010110000212",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1010100101010080131", "1110100101010000218", "0110101010100000208",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1010110101010060128", "1010101101010000215", "0100101101100000205",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1010010101110040125", "1010010101110000213", "0101001001100000202",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1110100100110030121", "1101100101010000209", "0101101010101070130",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0101011010100000217", "1001011011010000206", "0100101011101050127",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0100101011010000215", "1010010011010000203", "1101001001101040123",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1101001001010000211", "1101010100101080131", "1011010101000000218",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1011011010100000207", "1001011011010060128", "1001010110110000216",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0100100110110000205", "1010010010111040125", "1010010010110000213",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1011001001011100202", "0110101001010000220", "0110110101000000209",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1010110110101060129", "1010101101100000217", "1001001101110000206",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0100100101111050127", "0100100101110000215", "0110010010110000204",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0110101001010030123", "1110101001010000210", "0110101100101080131",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0101101011000000219", "1010101101100000207", "1001001101101050128",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1001001011100000216", "1100100101100000205", "1101010010101040124",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1101010010100000212", "1101101001010000201", "0101101010101020122",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"0101011010100000209", "1010101011011070129", "0010010111010000218",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1001001011010000207", "1100100101011050126", "1010100101010000214",
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
"1011010010100000214"
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321930.gif)
};
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
/**//// <summary>十二生肖</summary>
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
static readonly string animalsTable = "鼠牛虎兔龍蛇馬羊猴雞狗豬";
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
static readonly string monthsTable = "正二三四五六七八九十寒臘";
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
static readonly string daysTable = "初一初二初三初四初五初六初七初八初九初十十一十二十三十四十五十六十七十八十九二十廿一廿二廿三廿四廿五廿六廿七廿八廿九三十";
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
/**//// <summary>天干地支</summary>
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
static readonly string[] chineseEra;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
static LunarDate()
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
string sky = "甲乙丙丁戊已庚辛壬癸"; //天干
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
string earth = "子丑寅卯辰巳午未申酉戌亥"; //地支
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
chineseEra = new string[60];
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
for (int i = 0; i < 60; i++)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
chineseEra[i] = sky.Substring(i % 10, 1) + earth.Substring(i % 12, 1);
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321930.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
public LunarDate(int year, int month, int day)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
if ((year < MIN_YEAR) || (year > MAX_YEAR))
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
throw new ArgumentOutOfRangeException("year to0 large or too small");
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
// 計算農歷年
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
int lunarYear;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
int lunarMonth;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
int lunarDay;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarYear = year;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
// 農歷新年月份
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarMonth = Convert.ToInt32((lookupTable[lunarYear - MIN_YEAR].Substring(15, 2)));
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
// 農歷新年日子
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarDay = Convert.ToInt32((lookupTable[lunarYear - MIN_YEAR].Substring(17, 2))); ;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
if ((month < lunarMonth) || ((month == lunarMonth) && (day < lunarDay)))
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarYear--;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
// 農歷新年月份
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarMonth = Convert.ToInt32((lookupTable[lunarYear - MIN_YEAR].Substring(15, 2)));
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
// 農歷新年日子
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarDay = Convert.ToInt32((lookupTable[lunarYear - MIN_YEAR].Substring(17, 2))); ;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
// 計算農歷月
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
DateTime date = new DateTime(year, month, day);
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
DateTime lunarDate = new DateTime(lunarYear, lunarMonth, lunarDay);
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
TimeSpan span = date - lunarDate;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
int dayCount = span.Days;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarMonth = 1;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarDay = 1;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
bool leapMonth = false; //閏月
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
for (int i = 0; i < dayCount; i++)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarDay++;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
if (lunarDay == 30 + Convert.ToInt32(lookupTable[lunarYear - MIN_YEAR].Substring(lunarMonth - 1, 1)) ||
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
(leapMonth == true && (lunarDay == 30 + Convert.ToInt32(lookupTable[lunarYear - MIN_YEAR].Substring(12, 1)))))
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
if (
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
(leapMonth == false) &&
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
(lunarMonth == Convert.ToInt32(lookupTable[lunarYear - MIN_YEAR].Substring(13, 2)))
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
leapMonth = true;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321930.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
else
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
leapMonth = false;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarMonth++;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321930.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarDay = 1;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321930.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
else
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321930.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321930.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
// 計算農歷日
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarDayText = daysTable.Substring((lunarDay - 1) * 2, 2);
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
// 計算農歷月
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarMonthText = monthsTable.Substring(lunarMonth - 1, 1) + "月";
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
if (leapMonth == true) lunarMonthText = "閏" + lunarMonthText;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
// 農歷年
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
lunarYearText = Convert.ToString(lunarYear, 10) + "年";
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
// 計算天干地支
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
chineseEarText = chineseEra[(lunarYear - 4) % 60];
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
// 計算生肖
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
aminalsText = animalsTable.Substring((lunarYear - 4) % 12, 1);
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321930.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
//農歷日
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
private string lunarDayText;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
public string LunarDay ...{ get ...{ return this.lunarDayText; } }
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
//農歷月
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
private string lunarMonthText;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
public string LunarMonth ...{ get ...{ return this.lunarMonthText; } }
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
//農歷年
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
private string lunarYearText;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
public string LunarYear ...{ get ...{ return this.lunarYearText; } }
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
//天干地支
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
private string chineseEarText;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
public string chineseEar ...{ get ...{ return this.chineseEarText; } }
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
//生肖
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
private string aminalsText;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
public string Aminals ...{ get ...{ return this.aminalsText; } }
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
public override string ToString()
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321841.gif)
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321875.gif)
...{
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321863.gif)
return aminalsText + "," + chineseEarText + "," + lunarYearText + lunarMonthText + lunarDayText;
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321930.gif)
}
![](https://www.aspphp.online/bianchen/UploadFiles_4619/201701/2017011311321921.gif)
}技術討論的QQ群: 2514097 或 10987609