안냐세욤.. 까막임다..
음력 양력을 상호 변환하는 것이 생각보다 쉽지 않다는건 해보신 분들은 아실겁니다.
저도 쉽게 생각하고 부디쳤다가 고생좀 했죠..
원래의 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_)
|