안냐세욤.. 까막임다..
자꾸 날짜에 관한 소스를 올리는데, 집사람이 가계부 프로그램을 만들어 달라구 해서.. ^^;
이것 저것 틈틈히 짜고 주서 모은걸 필요하게 고친것들입니다.
달력을 만들다 보니, 24절기를 표기하게 되는데, 이건 고정된 날짜 계산법이 없더군요..
이론을 살펴보니 에지간한 학문 분야를 넘어서서..
리눅스 채널에 있는 PHP 소스를 가져다 좀 수정해서 사용했습니다.
원소스 : http://linuxchannel.net/docs/solar-24terms.txt
데 모 : http://linuxchannel.net/gaggle/solar.php
아래글은 원저자분이 리눅스 채널에 올린 내용입니다.
---------------------------------------------------------------- 안녕하세요?
드디어 완성했습니다.
제가 천문학 전공이 아니라서 상당히 고전했습니다.
(다행히 제가 천문학쪽에 관심이 많아서...^.9)
이 내용은 L-SN 과 phpschool.com 에 동일하게 포스팅합니다. ...
[PHP] class of solar, 24 절기 계산과 태양의 위치
[author]
- Chilbong Kim, <san2(at)linuxchannel.net>
- http://linuxchannel.net/
[changes]
- 2003.09.08 : bug fixed
- 2003.09.06 : new build
----------------------------------------------------------------
날짜의 표기 정확도는 1902 ~ 2037 사이에서 보장해 줍니다.
왜? 이렇게 아래 소스처럼 날짜의 정확도를 구간으로 표기해주냐면.. 계산상의 오차율 땜시 그렇다고
말씀 드리지요.
딸랑 함수 하나이니.. 헤더에 대한 설명은 생략하구요
소스에 대한 설명은 위의 원본을 살펴 보시기 바랍니다.
// http://pds4.devpia.com/MAEUL/top_pds/19000/18356/Solar24Terms.h: interface for the Solar24Terms class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SOLAR24TERMS_H__88D629FD_9FA1_46DC_AD6E_2C429BE09FAC__INCLUDED_)
#define AFX_SOLAR24TERMS_H__88D629FD_9FA1_46DC_AD6E_2C429BE09FAC__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// 이 전기 계산은 1902 ~ 2037 년도 범위에서 정확도를 제공합니다.
// 만약 정확한지 검사해보고 싶다면 다음 사이트에서 비교해 보시오.
// http://linuxchannel.net/gaggle/solar.php
// http://user.chollian.net/~kimdbin/re/ki24_150.html
/* Example
solar24_t* p = const_cast<solar24_t*>(Solar24Terms(2004));
for(int i=0; i<24; i++)
{
TRACE("(%s[%s])%04d-%02d-%02d %02d:%02d:%02d\n", p[i].h_name, p[i].c_name, p[i].time.tm_year+1900, p[i].time.tm_mon+1, p[i].time.tm_mday, p[i].time.tm_hour, p[i].time.tm_min, p[i].time.tm_sec);
}
*/
typedef struct
{
char h_name[5];
char c_name[5];
struct tm time;
} solar24_t;
const solar24_t* Solar24Terms(int Year);
#endif // !defined(AFX_SOLAR24TERMS_H__88D629FD_9FA1_46DC_AD6E_2C429BE09FAC__INCLUDED_)
|