Пример #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"));
        }