日期:2014-05-18 浏览次数:21156 次
using System.Globalization; using System.Collections; using System; namespace nl { public static class ChinaDate { private static ChineseLunisolarCalendar china = new ChineseLunisolarCalendar(); private static Hashtable gHoliday = new Hashtable(); private static Hashtable nHoliday = new Hashtable(); private static string[] JQ = { "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至" }; private static int[] JQData = { 0, 21208, 42467, 63836, 85337, 107014, 128867, 150921, 173149, 195551, 218072, 240693, 263343, 285989, 308563, 331033, 353350, 375494, 397447, 419210, 440795, 462224, 483532, 504758 }; static ChinaDate() { //公历节日 gHoliday.Add("0101", "元旦"); gHoliday.Add("0214", "情人节"); gHoliday.Add("0305", "雷锋日"); gHoliday.Add("0308", "妇女节"); gHoliday.Add("0312", "植树节"); gHoliday.Add("0315", "消权日"); gHoliday.Add("0401", "愚人节"); gHoliday.Add("0501", "劳动节"); gHoliday.Add("0504", "青年节"); gHoliday.Add("0601", "儿童节"); gHoliday.Add("0701", "建党节"); gHoliday.Add("0801", "建军节"); gHoliday.Add("0910", "教师节"); gHoliday.Add("1001", "国庆节"); gHoliday.Add("1224", "平安夜"); gHoliday.Add("1225", "圣诞节"); //农历节日 nHoliday.Add("0101", "春节"); nHoliday.Add("0115", "元宵节"); nHoliday.Add("0505", "端午节"); nHoliday.Add("0815", "中秋节"); nHoliday.Add("0909", "重阳节"); nHoliday.Add("1208", "腊八节"); } /// <summary> /// 获取农历 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static string GetChinaDate(DateTime dt) { if (dt > china.MaxSupportedDateTime || dt < china.MinSupportedDateTime) { //日期范围:1901 年 2 月 19 日 - 2101 年 1 月 28 日 throw new Exception(string.Format("日期超出范围!必须在{0}到{1}之间!", china.MinSupportedDateTime.ToString("yyyy-MM-dd"), china.MaxSupportedDateTime.ToString("yyyy-MM-dd"))); } string str = string.Format("{0} {1}{2}", GetYear(dt), GetMonth(dt), GetDay(dt)); string strJQ = GetSolarTerm(dt); if (strJQ != "") { str += " (" + strJQ + ")"; } string strHoliday = GetHoliday(dt); if (strHoliday != "") { str += " " + strHoliday; } string strChinaHoliday = GetChinaHoliday(dt); if (strChinaHoliday != "") { str += " " + strChinaHoliday; } return str; } /// <summary> /// 获取农历年份 /// </summary> /// &