Inheritance: EastAsianLunisolarCalendar
示例#1
1
        public string cDate()
        {
            ChineseLunisolarCalendar l = new ChineseLunisolarCalendar();
            DateTime dt = DateTime.Today; //转换当日的日期
            //dt = new DateTime(2006, 1,29);//农历2006年大年初一(测试用),也可指定日期转换
            string[] aMonth = { "", "正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "腊月", "腊月" };
            //a10表示日期的十位!
            string[] a10 = { "初", "十", "廿", "卅" };
            string[] aDigi = { "O", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
            string sYear = "", sYearArab = "", sMonth = "", sDay = "", sDay10 = "", sDay1 = "", sLuniSolarDate = "";
            int iYear, iMonth, iDay;
            iYear = l.GetYear(dt);
            iMonth = l.GetMonth(dt);
            iDay = l.GetDayOfMonth(dt);

            //Format Year
            sYearArab = iYear.ToString();
            for (int i = 0; i < sYearArab.Length; i++)
            {
                sYear += aDigi[Convert.ToInt16(sYearArab.Substring(i, 1))];
            }

            //Format Month
            int iLeapMonth = l.GetLeapMonth(iYear); //获取闰月

            /**/
            /*闰月可以出现在一年的任何月份之后。例如,GetMonth 方法返回一个介于 1 到 13 之间的数字来表示与指定日期关联的月份。如果在一年的八月和九月之间有一个闰月,则 GetMonth 方法为八月返回 8,为闰八月返回 9,为九月返回 10。*/

            if (iLeapMonth > 0 && iMonth <= iLeapMonth)
            {
                //for (int i = iLeapMonth + 1; i < 13; i++) aMonth[i] = aMonth[i - 1];
                aMonth[iLeapMonth] = "闰" + aMonth[iLeapMonth - 1];
                sMonth = aMonth[l.GetMonth(dt)];
            }
            else if (iLeapMonth > 0 && iMonth > iLeapMonth)
            {
                sMonth = aMonth[l.GetMonth(dt) - 1];
            }
            else
            {
                sMonth = aMonth[l.GetMonth(dt)];
            }

            //Format Day
            sDay10 = a10[iDay / 10];
            sDay1 = aDigi[(iDay % 10)];
            sDay = sDay10 + sDay1;

            if (iDay == 10) sDay = "初十";
            if (iDay == 20) sDay = "二十";
            if (iDay == 30) sDay = "三十";

            //Format Lunar Date
            //sLuniSolarDate = dt.Year+"年"+dt.Month+"月"+dt.Day+"日 "+Weeks(dt.DayOfWeek.ToString())+" 农历" + sYear + "年" + sMonth + sDay;
            sLuniSolarDate = dt.Year + "年" + dt.Month + "月" + dt.Day + "日 " + Weeks(dt.DayOfWeek.ToString()) + " 农历" + sMonth + sDay;
            return sLuniSolarDate;
        }
示例#2
0
        /// <summary>
        /// 获取十二生肖
        /// </summary>
        /// <param name="aDateTime"></param>
        /// <returns></returns>
        public static string Get12Lunar(DateTime aDateTime)
        {
            System.Globalization.ChineseLunisolarCalendar chinseCaleander = new System.Globalization.ChineseLunisolarCalendar();
            string TreeYear = "鼠牛虎兔龙蛇马羊猴鸡狗猪";
            int    intYear  = chinseCaleander.GetSexagenaryYear(aDateTime);

            return(I3StringUtil.SubString(TreeYear, chinseCaleander.GetTerrestrialBranch(intYear) - 1, 1));
        }
        /// <summary>
        /// 获取生肖,要求传入阳历的年月日
        /// </summary>
        /// <param name="year">年</param>
        /// <param name="month">月</param>
        /// <param name="day">日</param>
        /// <returns>生肖</returns>
        public static string GetYearOfBirth(string year, string month, string day) {

            var chineseCalender = new ChineseLunisolarCalendar();
            // 使用传入年月日实例化时间
            var dtm = new DateTime(int.Parse(year), int.Parse(month), int.Parse(day));
            // 获得传入年月日的地支
            var sexagenaryYear = chineseCalender.GetSexagenaryYear(dtm);
            // 截取生肖
            var yearOfBirth = YEAR_TREE.Substring(chineseCalender.GetTerrestrialBranch(sexagenaryYear) - 1, 1);

            return yearOfBirth;
        }
示例#4
0
    /// <summary>
    /// 公历转为农历的函数
    /// </summary>
    /// <remarks>作者:DeltaCat</remarks>
    /// <example>网址:http://www.zu14.cn</example>
    /// <param name="solarDateTime">公历日期</param>
    /// <returns>农历的日期</returns>
    static string SolarToChineseLunisolarDate(DateTime solarDateTime)
    {
        System.Globalization.ChineseLunisolarCalendar cal = new System.Globalization.ChineseLunisolarCalendar();

        int    year         = cal.GetYear(solarDateTime);
        int    month        = cal.GetMonth(solarDateTime);
        int    day          = cal.GetDayOfMonth(solarDateTime);
        int    leapMonth    = cal.GetLeapMonth(year);
        string stringFormat = $"农历" +
                              $"{"甲乙丙丁戊己庚辛壬癸"[(year - 4) % 10]}" +
                              $"{"子丑寅卯辰巳午未申酉戌亥"[(year - 4) % 12]}" +
                              $"({"鼠牛虎兔龙蛇马羊猴鸡狗猪"[(year - 4) % 12]})年" +
                              $"{(month == leapMonth ? "闰" : "")}{"无正二三四五六七八九十冬腊"[leapMonth > 0 && leapMonth <= month ? month - 1 : month]}月" +
 /// <summary>
 /// 返回指定公历日期的阴历时间
 /// </summary>
 /// <param name="time"></param>
 public ChinaDateTime(DateTime time)
 {
     cc = new System.Globalization.ChineseLunisolarCalendar();
     if (time > cc.MaxSupportedDateTime || time < cc.MinSupportedDateTime)
         throw new Exception("参数日期时间不在支持的范围内,支持范围:" + cc.MinSupportedDateTime.ToShortDateString() + "到" + cc.MaxSupportedDateTime.ToShortDateString());
     year = cc.GetYear(time);
     month = cc.GetMonth(time);
     if (month > 12)
         month -= 12;
     dayOfMonth = cc.GetDayOfMonth(time);
     isLeap = cc.IsLeapMonth(year, month);
     if (isLeap) month -= 1;
     this.time = time;
 }
        /// <summary>
        /// 返回指定农历年,月,日,是否为闰月的农历日期时间
        /// </summary>
        /// <param name="Year"></param>
        /// <param name="Month"></param>
        /// <param name="DayOfMonth"></param>
        /// <param name="IsLeap"></param>
        public ChinaDateTime(int Year, int Month, int DayOfMonth)
        {
            cc = new System.Globalization.ChineseLunisolarCalendar();
            if (Year >= cc.MaxSupportedDateTime.Year || Year <= cc.MinSupportedDateTime.Year)
                throw new Exception("参数年份时间不在支持的范围内,支持范围:" + cc.MinSupportedDateTime.ToShortDateString() + "到" + cc.MaxSupportedDateTime.ToShortDateString());

            if (Month < 1 || Month > 12)
                throw new Exception("月份必须在1~12范围");
            cc = new System.Globalization.ChineseLunisolarCalendar();

            if (cc.GetDaysInMonth(Year, cc.IsLeapMonth(Year, Month) ? Month + 1 : Month) < DayOfMonth || DayOfMonth < 1)
                throw new Exception("指定的月中的天数不在当前月天数有效范围");
            year = Year;
            month = Month;
            dayOfMonth = DayOfMonth;
            isLeap = IsLeap;
            time = DateTime.Now;
        }
示例#7
0
        /// <summary>
        /// GetCalendar returns a .NET Calendar equivalent to a CLDR Calendar
        /// </summary>
        /// <param name="calendar">A CLDR Calendar</param>
        /// <returns>A .NET Calendar</returns>
        private static System.Globalization.Calendar GetCalendar(Types.Calendar calendar)
        {
            System.Globalization.Calendar dotNetCalendar = null;

            if (string.Compare(calendar.Id, "gregorian", StringComparison.InvariantCulture) == 0 && calendar.CalendarType.CalendarAlgorithmType == CalendarAlgorithmType.SolarCalendar)
            {
                dotNetCalendar = new GregorianCalendar();
            }
            else if (string.Compare(calendar.Id, "japanese", StringComparison.InvariantCulture) == 0)
            {
                if (calendar.CalendarType.CalendarAlgorithmType == CalendarAlgorithmType.SolarCalendar)
                {
                    dotNetCalendar = new JapaneseCalendar();
                }
                else if (calendar.CalendarType.CalendarAlgorithmType == CalendarAlgorithmType.LunisolarCalendar)
                {
                    dotNetCalendar = new JapaneseLunisolarCalendar();
                }
            }
            else if (string.Compare(calendar.Id, "islamic-civil", StringComparison.InvariantCulture) == 0 &&
                calendar.CalendarType.CalendarAlgorithmType == CalendarAlgorithmType.LunisolarCalendar)
            {
                dotNetCalendar = new HijriCalendar();
            }
            else if (string.Compare(calendar.Id, "islamic", StringComparison.InvariantCulture) == 0
                && calendar.CalendarType.CalendarAlgorithmType == CalendarAlgorithmType.LunisolarCalendar)
            {
                dotNetCalendar = new HijriCalendar();
            }
            else if (string.Compare(calendar.Id, "chinese", StringComparison.InvariantCulture) == 0 &&
                calendar.CalendarType.CalendarAlgorithmType == CalendarAlgorithmType.LunisolarCalendar)
            {
                dotNetCalendar = new ChineseLunisolarCalendar();
            }
            else if (string.Compare(calendar.Id, "hebrew", StringComparison.InvariantCulture) == 0 &&
                calendar.CalendarType.CalendarAlgorithmType == CalendarAlgorithmType.LunisolarCalendar)
            {
                dotNetCalendar = new HebrewCalendar();
            }
            else if (string.Compare(calendar.Id, "buddhist", StringComparison.InvariantCulture) == 0 &&
                calendar.CalendarType.CalendarAlgorithmType == CalendarAlgorithmType.SolarCalendar)
            {
                dotNetCalendar = new ThaiBuddhistCalendar();
            }
            else if (string.Compare(calendar.Id, "coptic", StringComparison.InvariantCulture) == 0)
            {
                return null;
            }
            else if (string.Compare(calendar.Id, "persian", StringComparison.InvariantCulture) == 0 &&
                calendar.CalendarType.CalendarAlgorithmType == CalendarAlgorithmType.SolarCalendar)
            {
                return new PersianCalendar();
            }
            else if (string.Compare(calendar.Id, "ethiopic", StringComparison.InvariantCulture) == 0)
            {
                return null;
            }
            else if (string.Compare(calendar.Id, "indian", StringComparison.InvariantCulture) == 0)
            {
                return null;
            }
            else if (string.Compare(calendar.Id, "roc", StringComparison.InvariantCulture) == 0)
            {
                return null;
            }

            return dotNetCalendar;
        }
示例#8
0
	public void GetLeapMonth ()
	{
		GregorianCalendar gc = new GregorianCalendar ();
		Assert.AreEqual (0, gc.GetLeapMonth (2007), "#1-1");
		Assert.AreEqual (0, gc.GetLeapMonth (2008), "#1-2");
		Assert.AreEqual (0, gc.GetLeapMonth (2100), "#1-3");
		Assert.AreEqual (0, gc.GetLeapMonth (2000), "#1-4");

		JulianCalendar jc = new JulianCalendar ();
		Assert.AreEqual (0, jc.GetLeapMonth (2007), "#2-1");
		Assert.AreEqual (0, jc.GetLeapMonth (2008), "#2-2");
		Assert.AreEqual (0, jc.GetLeapMonth (2100), "#2-3");
		Assert.AreEqual (0, jc.GetLeapMonth (2000), "#2-4");
		Assert.AreEqual (0, jc.GetLeapMonth (2009), "#2-5");
		Assert.AreEqual (0, jc.GetLeapMonth (2010), "#2-6");

		HebrewCalendar hc = new HebrewCalendar ();
		// 3rd, 6th, 8th, 11th 14th and 17th year in every 19 are leap.
		// 5339 % 19 = 0.
		Assert.AreEqual (0, hc.GetLeapMonth (5343), "#3-1");
		Assert.AreEqual (0, hc.GetLeapMonth (5344), "#3-2");
		Assert.AreEqual (7, hc.GetLeapMonth (5345), "#3-3");
		Assert.AreEqual (0, hc.GetLeapMonth (5346), "#3-4");
		Assert.AreEqual (7, hc.GetLeapMonth (5347), "#3-5");
		Assert.AreEqual (0, hc.GetLeapMonth (5348), "#3-6");
		Assert.AreEqual (0, hc.GetLeapMonth (5349), "#3-7");

		ThaiBuddhistCalendar tc = new ThaiBuddhistCalendar ();
		Assert.AreEqual (0, tc.GetLeapMonth (2520), "#4-1");
		Assert.AreEqual (0, tc.GetLeapMonth (2521), "#4-2");
		Assert.AreEqual (0, tc.GetLeapMonth (2522), "#4-3");
		Assert.AreEqual (0, tc.GetLeapMonth (2523), "#4-4");

		ChineseLunisolarCalendar cc = new ChineseLunisolarCalendar ();
		Assert.AreEqual (0, cc.GetLeapMonth (2000), "#5-1");
		Assert.AreEqual (5, cc.GetLeapMonth (2001), "#5-2");
		Assert.AreEqual (0, cc.GetLeapMonth (2002), "#5-3");
		Assert.AreEqual (0, cc.GetLeapMonth (2003), "#5-4");
		Assert.AreEqual (3, cc.GetLeapMonth (2004), "#5-5");
		Assert.AreEqual (0, cc.GetLeapMonth (2005), "#5-6");
		Assert.AreEqual (8, cc.GetLeapMonth (2006), "#5-7");
		Assert.AreEqual (0, cc.GetLeapMonth (2007), "#5-8");
		Assert.AreEqual (0, cc.GetLeapMonth (2008), "#5-9");
		Assert.AreEqual (6, cc.GetLeapMonth (2009), "#5-10");
		Assert.AreEqual (0, cc.GetLeapMonth (2010), "#5-11");
		Assert.AreEqual (0, cc.GetLeapMonth (2011), "#5-12");
		Assert.AreEqual (5, cc.GetLeapMonth (2012), "#5-13");
		Assert.AreEqual (0, cc.GetLeapMonth (2013), "#5-14");
		Assert.AreEqual (10, cc.GetLeapMonth (2014), "#5-15");
		Assert.AreEqual (0, cc.GetLeapMonth (2015), "#5-16");
		Assert.AreEqual (0, cc.GetLeapMonth (2016), "#5-17");
		Assert.AreEqual (7, cc.GetLeapMonth (2017), "#5-18");
		Assert.AreEqual (0, cc.GetLeapMonth (2018), "#5-19");
		Assert.AreEqual (0, cc.GetLeapMonth (2019), "#5-20");

		KoreanLunisolarCalendar kc = new KoreanLunisolarCalendar ();
		Assert.AreEqual (0, kc.GetLeapMonth (2000), "#6-1");
		Assert.AreEqual (5, kc.GetLeapMonth (2001), "#6-2");
		Assert.AreEqual (0, kc.GetLeapMonth (2002), "#6-3");
		Assert.AreEqual (0, kc.GetLeapMonth (2003), "#6-4");
		Assert.AreEqual (3, kc.GetLeapMonth (2004), "#6-5");
		Assert.AreEqual (0, kc.GetLeapMonth (2005), "#6-6");
		Assert.AreEqual (8, kc.GetLeapMonth (2006), "#6-7");
		Assert.AreEqual (0, kc.GetLeapMonth (2007), "#6-8");
		Assert.AreEqual (0, kc.GetLeapMonth (2008), "#6-9");
		Assert.AreEqual (6, kc.GetLeapMonth (2009), "#6-10");
		Assert.AreEqual (0, kc.GetLeapMonth (2010), "#6-11");
		Assert.AreEqual (0, kc.GetLeapMonth (2011), "#6-12");
		Assert.AreEqual (4, kc.GetLeapMonth (2012)); // off from cn by 1, "#6-13");
		Assert.AreEqual (0, kc.GetLeapMonth (2013), "#6-14");
		Assert.AreEqual (10, kc.GetLeapMonth (2014), "#6-15");
		Assert.AreEqual (0, kc.GetLeapMonth (2015), "#6-16");
		Assert.AreEqual (0, kc.GetLeapMonth (2016), "#6-17");
		Assert.AreEqual (6, kc.GetLeapMonth (2017)); // off from cn by 1, "#6-18");
		Assert.AreEqual (0, kc.GetLeapMonth (2018), "#6-19");
		Assert.AreEqual (0, kc.GetLeapMonth (2019), "#6-20");
	}
示例#9
0
	protected void SetUp() {
		gcal = new GregorianCalendar();
		jucal = new JulianCalendar();
		hical = new HijriCalendar();
		hecal = new HebrewCalendar();
		jacal = new JapaneseCalendar();
		tacal = new TaiwanCalendar();
		kcal = new KoreanCalendar();
		tbcal = new ThaiBuddhistCalendar();
		acal = new Calendar[] {
			gcal, jucal, hical, hecal, jacal,
			tacal, kcal, tbcal};
#if NET_2_0
		clcal = new ChineseLunisolarCalendar ();
		tlcal = new TaiwanLunisolarCalendar ();
		jlcal = new JapaneseLunisolarCalendar ();
		klcal = new KoreanLunisolarCalendar ();
#endif
	}
 /// <summary>
 /// 获得指定公历日期中对应的农历天干地支年
 /// </summary>
 /// <param name="calendar"></param>
 /// <param name="date"></param>
 /// <returns></returns>
 public static string GetLunisolarYear(this ChineseLunisolarCalendar calendar, DateTime date)
 {
     return(GetLunisolarYear(calendar.GetYear(date)));
 }
 /// <summary>
 /// 获得指定公历的农历表述方式
 /// </summary>
 /// <param name="calendar"></param>
 /// <param name="date"></param>
 /// <returns></returns>
 public static string GetLunisolarDateString(this ChineseLunisolarCalendar calendar, DateTime date)
 {
     return(calendar.GetLunisolarYear(date) + "年" + calendar.GetLunisolarMonth(date) + calendar.GetLunisolarDay(date));
 }
示例#12
0
        string GetCNDate()
        {
            DateTime m_Date; //���������
            int cny; //ũ����������
            int cnm; //ũ����������
            int cnd; //ũ����������
            int icnm; //ũ������

            m_Date = DateTime.Today;
            ChineseLunisolarCalendar cnCalendar = new ChineseLunisolarCalendar();
            cny = cnCalendar.GetSexagenaryYear(m_Date);
            cnm = cnCalendar.GetMonth(m_Date);
            cnd = cnCalendar.GetDayOfMonth(m_Date);
            icnm = cnCalendar.GetLeapMonth(cnCalendar.GetYear(m_Date));

            string txcns = "ũ��";
            const string szText1 = "����ұ����켺������";
            const string szText2 = "���ӳ���î������δ������";
            const string szText3 = "����ţ������������F��";
            int tn = cny % 10; //���
            int dn = cny % 12;  //��֧
            //txcns += szText1.Substring(tn, 1);
            //txcns += szText2.Substring(dn, 1);
            //txcns += "(" + szText3.Substring(dn, 1) + ")��";

            //��ʽ���·���ʾ
            string[] cnMonth ={ "", "����", "����", "����", "����", "����", "����"
                , "����", "����", "����", "ʮ��", "ʮһ��", "ʮ����", "ʮ����" };
            if (icnm > 0)
            {
                for (int i = icnm + 1; i < 13; i++)
                    cnMonth[icnm] = cnMonth[icnm - 1];
                cnMonth[icnm] = "��" + cnMonth[icnm];
            }
            txcns += cnMonth[cnm];
            string[] cnDay ={ "", "��һ", "����", "����", "����", "����", "����", "����"
                , "����", "����", "��ʮ", "ʮһ", "ʮ��", "ʮ��"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   , "ʮ��", "ʮ��", "ʮ��"
                , "ʮ��", "ʮ��", "ʮ��", "��ʮ", "إһ", "إ��", "إ��", "إ��", "إ��"
                , "إ��", "إ��", "إ��", "إ��", "��ʮ" };
            txcns += cnDay[cnd];
            return txcns;
        }
示例#13
0
        ///<summary>
        ///中国式的时间格式
        ///子时:23:00-1:00
        ///丑时:1:00-3:00
        ///寅时:3:00-5:00
        ///卯时:5:00-7:00
        ///辰时:7:00-9:00
        ///巳时:9:00-11:00
        ///午时:11:00-13:00
        ///未时:13:00-15:00
        ///申时:15:00-17:00
        ///酉时:17:00-19:00
        ///戌时:19:00-21:00
        ///亥时:21:00-23:00
        /// </summary>
        /// <param name="date">时间参数</param>
        /// <returns></returns>
        public static string GetChineseDate(DateTime date)
        {
            var cnDate = new ChineseLunisolarCalendar();
            string[] arrMonth = { "", "正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "冬月", "腊月" };
            string[] arrDay = { "", "初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十" };
            string[] arrYear = { "", "甲子", "乙丑", "丙寅", "丁卯", "戊辰", "己巳", "庚午", "辛未", "壬申", "癸酉", "甲戌", "乙亥", "丙子", "丁丑", "戊寅", "己卯", "庚辰", "辛己", "壬午", "癸未", "甲申", "乙酉", "丙戌", "丁亥", "戊子", "己丑", "庚寅", "辛卯", "壬辰", "癸巳", "甲午", "乙未", "丙申", "丁酉", "戊戌", "己亥", "庚子", "辛丑", "壬寅", "癸丑", "甲辰", "乙巳", "丙午", "丁未", "戊申", "己酉", "庚戌", "辛亥", "壬子", "癸丑", "甲寅", "乙卯", "丙辰", "丁巳", "戊午", "己未", "庚申", "辛酉", "壬戌", "癸亥" };

            var lYear = cnDate.GetYear(date);
            var sYear = arrYear[cnDate.GetSexagenaryYear(date)];
            var lMonth = cnDate.GetMonth(date);
            var lDay = cnDate.GetDayOfMonth(date);

            //获取第几个月是闰月,等于0表示本年无闰月
            var leapMonth = cnDate.GetLeapMonth(lYear);
            var sMonth = arrMonth[lMonth];
            //如果今年有闰月
            if (leapMonth > 0)
            {
                //闰月数等于当前月份
                sMonth = lMonth == leapMonth ? string.Format("闰{0}", arrMonth[lMonth - 1]) : sMonth;
                sMonth = lMonth > leapMonth ? arrMonth[lMonth - 1] : sMonth;
            }
            return string.Format("{0}年{1}{2}", sYear, sMonth, arrDay[lDay]);
        }
示例#14
0
文件: UtilBO.cs 项目: XBoom/GodWay
 /// <summary> 
 /// 获得农历 
 /// </summary> 
 /// <returns>http://img1.eqingyu.com</returns> 
 public static string cDate(DateTime dt)
 {
     ChineseLunisolarCalendar l = new ChineseLunisolarCalendar();
     //DateTime dt = DateTime.Today; //转换当日的日期  //
     // dt = new DateTime(2006, 1,29);
     //农历2006年大年初一(测试用),也可指定日期转换
     string[] aMonth ={ "", "正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "腊月", "腊月" };  //a10表示日期的十位!
     string[] a10 ={ "初", "十", "廿", "卅" }; string[] aDigi ={ "O", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
     string sYear = "", sYearArab = "", sMonth = "", sDay = "", sDay10 = "", sDay1 = "", sLuniSolarDate = "";
     int iYear, iMonth, iDay; iYear = l.GetYear(dt); iMonth = l.GetMonth(dt); iDay = l.GetDayOfMonth(dt);  //Format Year
     sYearArab = iYear.ToString();
     for (int i = 0; i < sYearArab.Length; i++)
     {
         sYear += aDigi[Convert.ToInt16(sYearArab.Substring(i, 1))];
     }
     //Format Month
     int iLeapMonth = l.GetLeapMonth(iYear);
     //获取闰月
     if (iLeapMonth > 0 && iMonth <= iLeapMonth)
     {
         //
         for (int i = iLeapMonth + 1; i < 13; i++)
         {
             aMonth[i] = aMonth[i - 1];
             aMonth[iLeapMonth] = "闰" + aMonth[iLeapMonth - 1];
             sMonth = aMonth[l.GetMonth(dt)];
         }
     }
     else if (iLeapMonth > 0 && iMonth > iLeapMonth)
     {
         sMonth = aMonth[l.GetMonth(dt) - 1];
     }
     else
     {
         sMonth = aMonth[l.GetMonth(dt)];
     }
     //Format Day
     sDay10 = a10[iDay / 10];
     sDay1 = aDigi[(iDay % 10)];
     sDay = sDay10 + sDay1;
     if (iDay == 10) sDay = "初十";
     if (iDay == 20) sDay = "二十";
     if (iDay == 30) sDay = "三十";
     //Format Lunar Date  //
     sLuniSolarDate = dt.Year + "年" + dt.Month + "月" + dt.Day + "日 " + Weeks(dt) + " 农历" + sYear + "年" + sMonth + sDay;
     sLuniSolarDate = "" + sMonth + sDay;
     return sLuniSolarDate;
 }
 public CalendarExchange()
 {
     calender = new ChineseLunisolarCalendar();
 }
示例#16
0
 public ChineseDate()
 {
     _cnCalendar = new ChineseLunisolarCalendar();
 }
示例#17
0
        public IQueryable<Member> GetBirthMemberInDays(int day)
        {
            int rangeDay = 5;//生日提前天数
            ChineseLunisolarCalendar clc = new ChineseLunisolarCalendar();
            string Luneryear = Utilities.ConvertToChineseYearStyle(clc.GetYear(DateTime.Now));//获取当前农历年,并将其转换为中文(此方法就不贴了,so easy)

            //阳历农历按表中存的自动检索出对应的生日范围内的信息
            StringBuilder strSql = new StringBuilder();
            strSql.AppendLine("select MemberID from Member ");
            strSql.AppendLine(" where 1=1 ");
            /*阳历生日判断Start*/
            strSql.AppendLine("and datediff(day,getdate(),Convert(varchar(100),(convert(varchar(4),Year(getdate()))+'-'+ ");
            strSql.AppendLine(" convert(varchar(2),Month(Birthday))+'-'+convert(varchar(2),Day(Birthday))),23)) <= '" + rangeDay + "'");
            strSql.AppendLine("and datediff(day,getdate(),Convert(varchar(100),(convert(varchar(4),Year(getdate()))+'-'+ ");
            strSql.AppendLine("convert(varchar(2),Month(Birthday))+'-'+convert(varchar(2),Day(Birthday))),23)) >= 0");
            /*阳历生日判断End*/
            strSql.AppendLine(" and isLeap=0 and (Birthday is not null or Birthday!='')");

            strSql.AppendLine("union all");

            strSql.AppendLine("select MemberID from Member ");
            strSql.AppendLine(" where 1=1");
            /*农历生日判断Start*/
            strSql.AppendLine("and datediff(day,getdate(),Convert(varchar(100),(convert(varchar(4),Year(getdate()))+'-'+ ");
            strSql.AppendLine(" convert(varchar(2),Month(dbo.fn_GetDate('" + Luneryear + "'+BirthDay1)))+'-'+convert(varchar(2),Day(dbo.fn_GetDate('" + Luneryear + "'+BirthDay1)))),23)) <= '" + rangeDay + "'");
            strSql.AppendLine("and datediff(day,getdate(),Convert(varchar(100),(convert(varchar(4),Year(getdate()))+'-'+ ");
            strSql.AppendLine("convert(varchar(2),Month(dbo.fn_GetDate('" + Luneryear + "'+BirthDay1)))+'-'+convert(varchar(2),Day(dbo.fn_GetDate('" + Luneryear + "'+BirthDay1)))),23)) >= 0");
            /*农历生日判断End*/
            strSql.AppendLine(" and isLeap=1 and (BirthDay1 is not null or BirthDay1!='')");

            List<int> Ids = db.SqlQuery<int>(strSql.ToString()).ToList();

            var query = db.Set<Member>().Where(x => Ids.Contains(x.MemberID));
            return query;
        }
示例#18
0
        public ActionResult Edit(int ID)
        {
            ChineseLunisolarCalendar clc = new System.Globalization.ChineseLunisolarCalendar();
            string Luneryear = Utilities.ConvertToChineseYearStyle(clc.GetYear(DateTime.Now));
            var entity = MemberService.Find(ID);
            var model = new MemberEditViewModel()
            {
                Address = entity.Address,
                BirthDay = entity.BirthDay,
                Sex = entity.Sex,
                QQ = entity.QQ,
                DepartmentID = entity.DepartmentID,
                Description = entity.Description,
                Email = entity.Email,
                GroupID = entity.GroupID,
                IsLeader = entity.IsLeader,
                AvtarUrl = entity.AvtarUrl,
                IsLeap = entity.IsLeap,
                Mobile = entity.Mobile,
                Mobile1 = entity.Mobile1,
                NickName = entity.NickName,
                MemberID = entity.MemberID,
                FamilySituation = entity.FamilySituation,
                IDNumber = entity.IDNumber,
                JobExp = entity.JobExp,
                StudyExp = entity.StudyExp,
                JobTitleID = entity.JobTitleID
            };

            ViewBag.Data_GroupID = Utilities.GetSelectListData(GroupService.GetALL()
               , x => x.ID, x => x.Name, model.GroupID, true);
            ViewBag.Data_DepartmentID = Utilities.GetSelectListData(DepartmentService.GetALL()
                , x => x.ID, x => x.Name, model.DepartmentID, true);
            ViewBag.Data_JobTitleID = Utilities.GetSelectListData(
               JobTitleCateService.GetALL()
              , x => x.ID, x => x.CateName, model.JobTitleID, true);
            return View(model);
        }
示例#19
0
        //显示农历日期
        string GetCNDate()
        {
             DateTime m_Date; //今天的日期
             int cny; //农历的年月日
             int cnm; //农历的年月日
             int cnd; //农历的年月日
             int icnm; //农历闰月

             m_Date = DateTime.Today;
            ChineseLunisolarCalendar cnCalendar =new ChineseLunisolarCalendar();
            cny = cnCalendar.GetSexagenaryYear(m_Date);
            cnm = cnCalendar.GetMonth(m_Date);
            cnd = cnCalendar.GetDayOfMonth(m_Date);
            icnm = cnCalendar.GetLeapMonth(cnCalendar.GetYear(m_Date));


            string txcns = "农历";
            const string szText1 = "癸甲乙丙丁戊己庚辛壬";
            const string szText2 = "亥子丑寅卯辰巳午未申酉戌";
            const string szText3 = "猪鼠牛虎免龙蛇马羊猴鸡狗";
            int tn = cny % 10; //天干
            int dn = cny % 12;  //地支
            //txcns += szText1.Substring(tn, 1);
            //txcns += szText2.Substring(dn, 1);
            //txcns += "(" + szText3.Substring(dn, 1) + ")年";

            //格式化月份显示
            string[] cnMonth ={ "", "正月", "二月", "三月", "四月", "五月", "六月"
                , "七月", "八月", "九月", "十月", "十一月", "十二月", "十二月" };
            if (icnm > 0)
            {
                for (int i = icnm + 1; i < 13; i++)
                    cnMonth[icnm] = cnMonth[icnm - 1];
                cnMonth[icnm] = "闰" + cnMonth[icnm];
            }
            txcns += cnMonth[cnm];
            string[] cnDay ={ "", "初一", "初二", "初三", "初四", "初五", "初六", "初七"
                , "初八", "初九", "初十", "十一", "十二", "十三"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   , "十四", "十五", "十六"
                , "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五"
                , "廿六", "廿七", "廿八", "廿九", "三十" };
            txcns += cnDay[cnd];
            return txcns;
        }
示例#20
0
 public static void ChineseLunisolarTest()
 {
     ChineseLunisolarCalendar cal3 = new ChineseLunisolarCalendar();
     int[] eras = cal3.Eras;
     Assert.Equal(1, eras.Length);
 }
 /// <summary>
 /// 返回农历日
 /// </summary>
 /// <param name="day"></param>
 /// <returns></returns>
 public static string GetLunisolarDay(this ChineseLunisolarCalendar calendar, DateTime datetime)
 {
     return(GetLunisolarDay(calendar.GetDayOfMonth(datetime)));
 }
示例#22
0
        public DateTimeFormatter(string dateTimePattern, string calendarName, string amDesignator, string pmDesignator)
        {
            Calendar calendar = null;
            switch (calendarName)
            {
                case "ChineseLunisolarCalendar":
                    calendar = new ChineseLunisolarCalendar();
                    break;

                case "GregorianCalendar":
                    calendar = new GregorianCalendar();
                    break;

                case "HebrewCalendar":
                    calendar = new HebrewCalendar();
                    break;

                case "HijriCalendar":
                    calendar = new HijriCalendar();
                    break;

                case "JapaneseCalendar":
                    calendar = new JapaneseCalendar();
                    break;

                case "JapaneseLunisolarCalendar":
                    calendar = new JapaneseLunisolarCalendar();
                    break;

                case "JulianCalendar":
                    calendar = new JulianCalendar();
                    break;

                case "KoreanCalendar":
                    calendar = new KoreanCalendar();
                    break;

                case "KoreanLunisolarCalendar":
                    calendar = new KoreanLunisolarCalendar();
                    break;

                case "PersianCalendar":
                    calendar = new PersianCalendar();
                    break;

                case "TaiwanCalendar":
                    calendar = new TaiwanCalendar();
                    break;

                case "TaiwanLunisolarCalendar":
                    calendar = new TaiwanLunisolarCalendar();
                    break;

                case "ThaiBuddhistCalendar":
                    calendar = new ThaiBuddhistCalendar();
                    break;

                case "UmAlQuraCalendar":
                    calendar = new UmAlQuraCalendar();
                    break;
            }

            Initialize(dateTimePattern, calendar, amDesignator, pmDesignator);
        }
 /// <summary>
 /// 返回生肖
 /// </summary>
 /// <param name="datetime">公历日期</param>
 /// <returns></returns>
 public static string GetShengXiao(this ChineseLunisolarCalendar calendar, DateTime datetime)
 {
     return(_shengxiao[calendar.GetTerrestrialBranch(calendar.GetSexagenaryYear(datetime)) - 1]);
 }