음력 <-> 양력 변환 소스  | VC++ 일반 2004-12-21 오후 5:31:03
권진호 (crowback)  권진호님께 메시지 보내기권진호님을 내 주소록에 추가합니다.권진호님의 개인게시판 가기 번호: 18355   / 평점:  (-)  / 읽음:5,070

안냐세욤.. 까막임다..


음력 양력을 상호 변환하는 것이 생각보다 쉽지 않다는건 해보신 분들은 아실겁니다.

저도 쉽게 생각하고 부디쳤다가 고생좀 했죠..


원래의 C소스는 어디선가 긁어 왔는데.. 너무 오래되서.. 까먹었구요.

혹시나 원저자분이 이 소스를 보신다면 글을 올리시거나 메일 부탁드려요.

그럼 제가 출처를 밝히겠습니다.


사용법은 함수 딸랑 두개이니 어렵지 않게 사용하실 수 있을겁니다.

결과는 구조체를 보시고, 트레이스 해보시면.. 각각의 필드에 필요한 거의 대부분의 정보가

채워저 있을겁니다.


원소스를 좀 많이 수정해서, 띠, 단기, 요일, 음력, 윤달 여부, 연도의 육갑자 표기, 날의 육갑자 표기 한글/한문

모든 정보가 표기됩니다.


아래는 헤더파일이구요..


소스와 헤더 파일을 올리겠습니다.


// SolarLunarConverter.h

//

//////////////////////////////////////////////////////////////////////


#if !defined(AFX_LUNARSOLAR_H__9D30E40F_148A_4CF3_995B_99E559ECA7B9__INCLUDED_)

#define AFX_LUNARSOLAR_H__9D30E40F_148A_4CF3_995B_99E559ECA7B9__INCLUDED_


#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000


#pragma pack(push, 1)


typedef struct _lunar_info

{

    unsigned short  year_lunar;     // 음력 변환후 년도 (양력과 다를 수 있음)

    unsigned short  year_dangi;     // 당해년도 단기

    unsigned char   month;          // 음력 변환후 달

    unsigned char   day;            // 음력 변환후 일

    unsigned char   dayofweek;      // 주중 요일을 숫자로 ( 0:일, 1:월 ... 6:토)

    bool            isyoondal;      // 윤달 여부 0:평달/1:윤달

    char            h_year[5];      // 당해 년도 갑자표기 (한글)

    char            h_day1[3];      // 요일 (한글)

    char            h_day2[5];      // 당일 갑자표기 (한글)

    char            h_ddi[7];       // 당해 년도 띠 표기 (한글)

    char            c_year[5];      // 당해 년도 갑자표기 (한자)

    char            c_day1[3];      // 요일 (한자)

    char            c_day2[5];      // 당일 갑자표기 (한자)

} lunar_t;



typedef struct _solar_info

{

    unsigned short  year;           // 양력 변환후 년도 (음력과 다를 수 있음)

    unsigned char   month;          // 양력 변환후 달

    unsigned char   day;            // 양력 변환후 일

    unsigned char   dayofweek;      // 주중 요일을 숫자로 ( 0:일, 1:월 ... 6:토)

} solar_t;



// 이 음력 계산은 1841 ~ 2043 년도 범위에서 정확도를 제공합니다.

// 만약 정확한지 검사해보고 싶다면 다음 사이트에서 비교해 보시오.

// http://www.koreamanse.com/hotservice/yangumch/yangumch.html?mode=2

BOOL SolarToLunar(int Year, int Month, int Day, lunar_t& lunar);


BOOL LunarToSolar(int Year, int Month, int Day, BOOL Leaf, solar_t& solar);



#pragma pack(pop)


#endif // !defined(AFX_LUNARSOLAR_H__9D30E40F_148A_4CF3_995B_99E559ECA7B9__INCLUDED_)


이 글에 평점 주기:  
[코멘트] 좋음 2004-12-21 17:32:00
권진호 (crowback)   권진호님께 메시지 보내기권진호님을 내 주소록에 추가합니다.권진호님의 개인게시판 가기 
아..참고로 정확도는 1841 ~ 2043 사이에서만 지원됩니다.
 
[코멘트] 놀람 2004-12-22 11:13:00
안졸리냐졸려 (taehwanshi)   안졸리냐졸려님께 메시지 보내기안졸리냐졸려님을 내 주소록에 추가합니다.안졸리냐졸려님의 개인게시판 가기 
음력 계산이 조금 틀리네요. 2004-12-02를 샘플로 해 보세요.
 
[코멘트] 슬픔 2004-12-22 14:06:00
권진호 (crowback)   권진호님께 메시지 보내기권진호님을 내 주소록에 추가합니다.권진호님의 개인게시판 가기 
헛.. 믿을만한 자료라 가져다 쓰면서 의심을 안했는데.. 배열값이 몇개 틀려있군요.
수정했습니다. 혹시나 해서 http://www.kordic.re.kr/manse/ 의 한국 표준 연력에서...
2004년부터 2010년까지 수동으로 비교해 봤으나 괜찬더군요.. 지송함다.
 
[코멘트] 최고 2004-12-23 09:24:00
안졸리냐졸려 (taehwanshi)   안졸리냐졸려님께 메시지 보내기안졸리냐졸려님을 내 주소록에 추가합니다.안졸리냐졸려님의 개인게시판 가기 
그래도 조금 틀린거 같네요. 2006년 1월 29일이 음력으로 2006년 1월 1일인데
2005년 12월 30일로 나와요. 자꾸 딴지 거는거 같아서 죄송하네요.
 
[코멘트] 좋음 2004-12-23 10:28:00
권진호 (crowback)   권진호님께 메시지 보내기권진호님을 내 주소록에 추가합니다.권진호님의 개인게시판 가기 
졸려님께서 일케 검수까지 해주시니. 감사함다.. 졸려님의 성원에 힘입어 2000년 2010년까지 매월 음력말일과 초일을 비교하여 하나씩 검사해서 완료했습니다.
2011년부터 2043년까지는 쪼끔씩 비교해서 다 올릴께요.. 잘 꼬집으시네요.. 아얏~~
여기에 완료라는 코멘트가 부트면.. 그 대 제 업로드 하겠습니다.
 
[코멘트] 좋음 2004-12-27 10:53:00
권진호 (crowback)   권진호님께 메시지 보내기권진호님을 내 주소록에 추가합니다.권진호님의 개인게시판 가기 
2035년까지 음력및 윤달에 대한 검증을 해보았습니다. 비교는 한국표준연력 사이트를 대상으로 하였습니다. 생각보다 시간이 더 많이 걸리는 군요.
정확하게 비교한 부분은 1980년부터 2035년까지 입니다. 여기까지 업로드 해놓겠습니다.
2035년부터 2043년까지 부분도 필요하신 분은 좀더 기다려주시길..
 
[코멘트] 난감 2004-12-27 10:57:00
권진호 (crowback)   권진호님께 메시지 보내기권진호님을 내 주소록에 추가합니다.권진호님의 개인게시판 가기 
좀 제대로된 음력 및 윤달 계산 자료나 소스가 있으신 분은 좀 올려주세욤..
지금까지 한국표준연력 사이트를 제외하곤 거의 제대로된 음력<->양력 변환 자료를 볼 수가 없군요.. 대부분이 이상쿤.. -_-? 지금껏 어케 써왔지?
 
[코멘트] 좋음 2004-12-27 17:02:00
류석민 (pokev25)   류석민님께 메시지 보내기류석민님을 내 주소록에 추가합니다.류석민님의 개인게시판 가기 
그래서 얼마전에 핸폰 음력도 틀리다고 뉴스에도 나왔어요.

대표적인 날짜가 2004년 11월 12일, 음력 10월1일이어야 합니다.
 
[코멘트] 좋음 2004-12-27 18:54:00
권진호 (crowback)   권진호님께 메시지 보내기권진호님을 내 주소록에 추가합니다.권진호님의 개인게시판 가기 
그래서 노가다로 틈틈히.. 2035년까지 마춰봤습니다. 음력월말 과 월초.. 2가지 일자만 비교하는 형식으로요.. 혹시나 그럴일은 없겠지만.. 않맞는 날짜 찾아주시면..
빠르게 수정해 놓겠습니다.
 
[코멘트] 부끄럼 2004-12-29 10:21:00
래디박 (jinundeyo)   래디박님께 메시지 보내기래디박님을 내 주소록에 추가합니다.래디박님의 개인게시판 가기 
전 욘사마 핸드폰 쓰는데 2004년 11월 12일이 음력 10월 1일이라고 정상적으로 나오는군요..

+ Recent posts