Пример #1
0
        public string Lunar2Solar(string sDate)
        {
            DateTime dt;

            try {
                dt = new DateTime(Convert.ToInt32(sDate.Substring(0, 4)), Convert.ToInt32(sDate.Substring(4, 2)), Convert.ToInt32(sDate.Substring(6, 2)));
            } catch (Exception) {
                return(sDate);
            }
            bool bExistLeap = false;
            KoreanLunisolarCalendar kr_Lunnar = new KoreanLunisolarCalendar();
            int _lunnarYY = kr_Lunnar.GetYear(dt);
            int _lunnarMM = kr_Lunnar.GetMonth(dt);
            int _lunnarDD = kr_Lunnar.GetDayOfMonth(dt);

            if (kr_Lunnar.GetMonthsInYear(_lunnarYY) > 12)                                 //12보다 큰달은 윤달이 있다는.
            {
                bExistLeap = kr_Lunnar.IsLeapMonth(_lunnarYY, _lunnarMM);                  // 윤달에 대한 true or false
                int intLeap_mm = kr_Lunnar.GetLeapMonth(_lunnarYY);                        //윤달 추출
                if (_lunnarMM >= intLeap_mm)
                {
                    _lunnarMM--;
                }
            }
            return((new DateTime(_lunnarYY, _lunnarMM, _lunnarDD)).ToString("yyyyMMdd"));
        }
Пример #2
0
        public string Solar2Lunar(string sDate)
        {
            string[] YunDal = new string [] { "190008", "190305", "190604", "190902", "191106", "191405", "191702", "191907", "192205",
                                              "192504", "192802", "193006", "193305", "193603", "193807", "194106", "194404", "194702", "194907",
                                              "195205", "195503", "195708", "196006", "196304", "196603", "196807", "197105", "197404", "197608",
                                              "197906", "198204", "198410", "198706", "199005", "199303", "199508", "199805", "200104", "200402",
                                              "200607", "200905", "201203", "201409", "201705", "202004", "202302", "202506", "202805", "203103",
                                              "203311", "203606", "203905", "204202", "204407", "205003" };
            KoreanLunisolarCalendar kr_Lunnar = new KoreanLunisolarCalendar();
            int    iYear  = Convert.ToInt32(sDate.Substring(0, 4));
            int    iMonth = Convert.ToInt32(sDate.Substring(4, 2));
            int    iDay   = Convert.ToInt32(sDate.Substring(6, 2));
            string str    = sDate.Substring(0, 6);

            if (kr_Lunnar.GetMonthsInYear(iYear) > 12)
            {
                int leapMonth = kr_Lunnar.GetLeapMonth(iYear);
                for (int i = 0; i < YunDal.Count(); i++)
                {
                    if (str == YunDal[i])
                    {
                        iMonth++;
                        break;
                    }
                }
                if (iMonth > leapMonth)
                {
                    iMonth++;
                }
            }
            try {
                return(kr_Lunnar.ToDateTime(iYear, iMonth, iDay, 0, 0, 0, 0).ToString("yyyyMMdd"));
            } catch (Exception) {
                return(sDate);
            }
        }