2010. 4. 29. 10:07
출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNo=8&no=1228&ref=1228
--------------------------------------------------------------------------------------------------

//양력은 음력으로변환 테스트
private void button1_Click(object sender, EventArgs e)
{
    label1.Text =음력변환(2007, 1, 1);
    label2.Text = 음력변환(DateTime.Now);
}

//음력을 양력으로 변환 테스트
private void button2_Click(object sender, EventArgs e)
{
    label2.Text = 양력변환(2006,11,13,false).ToShortDateString();
}

private string 음력변환(DateTime dt)
{
    int n윤월;
    int n음력년, n음력월, n음력일;
    bool b윤달 = false;
    System.Globalization.KoreanLunisolarCalendar 음력 =
new System.Globalization.KoreanLunisolarCalendar();

    n음력년 = 음력.GetYear(dt);
    n음력월 = 음력.GetMonth(dt);
    n음력일 = 음력.GetDayOfMonth(dt);
    if (음력.GetMonthsInYear(n음력년) > 12)             //1년이 12이상이면 윤달이 있음..
    {
b윤달 = 음력.IsLeapMonth(n음력년, n음력월);     //윤월인지
n윤월 = 음력.GetLeapMonth(n음력년);             //년도의 윤달이 몇월인지?
if (n음력월 >= n윤월)                           //달이 윤월보다 같거나 크면 -1을 함 즉 윤8은->9 이기때문
   n음력월--;
    }
    return n음력년.ToString() + "-" + (b윤달 ? "*" : "") + n음력월.ToString() + "-" + n음력일.ToString();
}

private string 음력변환(int n양력년, int n양력월, int n양력일)
{
    DateTime dTemp = new DateTime(n양력년, n양력월, n양력일); //양력
    return 음력변환(dTemp);
}

private DateTime 양력변환(int n음력년, int n음력월, int n음력일, bool b달)
{
    int n윤월;
    System.Globalization.KoreanLunisolarCalendar 음력 =
new System.Globalization.KoreanLunisolarCalendar();

    if (음력.GetMonthsInYear(n음력년) > 12)
    {
n윤월 = 음력.GetLeapMonth(n음력년);
if (b달)
   n음력월++;
if (n음력월 > n윤월)
   n음력월++;
    }
    return 음력.ToDateTime(n음력년, n음력월, n음력일, 0, 0, 0, 0);
}



Posted by CoolDragon