절기 출력하는 php 소스
페이지 정보
작성자 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 64회 작성일 24-09-03 13:14본문
인터넷에서 자바스크립트로 작성된 소스를 저장해 뒀는데 출처가 어딘지 못 찾겠네요.
허락도 없이 php로 작성해서 배포합니다.
아래 소스는 클래스 함수로 1941년~2040년까지 절기를 출력하는 소스입니다.
<?php
Class Terms_API {
// 절기 패턴 정의-일자(1941~,1951~,1961~,1971~,1981~,1991~,2001~,2011~,2021~,2031~2040)
protected $patterns = array(
'sohan' => array('6666666666', '6666665666', '5666566656', '6656665666', '5666566655', '6655665566', '5566556655', '6655665566', '5566555655', '5655565556'), // 小寒 0105, 0106;
'dehan' => array('0111011101', '1100110011', '0011001100', '1100110011', '0011000100', '0100010001', '0001000100', '0100010000', '0000000000', '0000000000'), // 大寒 0120, 0121;
'ipchun' => array('4455445544', '5544454445', '4445444544', '4544454445', '4445444444', '4444444444', '4444444444', '4444444444', '3444344434', '4434443444'), // 立春 0203, 0204, 0205;
'usu' => array('9990999099', '9099909999', '9999999999', '9999999999', '9999999999', '9999998999', '8999899989', '9989998999', '8999899988', '9988998899'), // 雨水 0218, 0219, 0220;
'gyongchip' => array('6666666666', '6666656665', '6665666566', '6566656665', '6665666556', '6556655665', '5665566556', '6556655665', '5565556555', '6555655565'), // 驚蟄 0305, 0306;
'chunbun' => array('1111111111', '1111111110', '1110111011', '1011101110', '1110111011', '1001100110', '0110011001', '1001100110', '0110001000', '1000100010'), // 春分 0320, 0221;
'chongmyong' => array('5565556555', '5555555555', '5555555555', '5555555555', '5554555455', '5455545554', '5554555455', '5455544554', '4554455445', '5445544554'), // 淸明 0404, 0405;
'gogu' => array('0110011001', '1001100010', '0010001000', '1000100910', '0010000000', '0000000000', '0000000000', '0000000009', '0009000900', '0900090009'), // 穀雨 0419, 0420, 0421;
'ipha' => array('6666666566', '6566656665', '6665666566', '6566656665', '5665566556', '6556655665', '5665566555', '6555655565', '5565556555', '6555655565'), // 立夏 0505, 0506;
'soman' => array('1221122112', '2111211121', '1121112111', '2111211121', '1121111111', '1111111111', '1111111111', '1111101110', '1110111011', '1011101110'), // 小滿 0520, 0521, 0522;
'mangzong' => array('6666666666', '6666666666', '6666666666', '6566656665', '6665666566', '6566656665', '5665566556', '6556655665', '5665566555', '6555655565'), // 芒種 0605, 0506;
'hazhi' => array('2221222122', '2122212221', '2221122112', '2112211221', '1221122112', '2111211121', '1121112111', '2111211121', '1111111111', '1111111111'), // 夏至 0621, 0622, 0623;
'sosoe' => array('7887788778', '8778877887', '7787778777', '8777877787', '7787778777', '7777777777', '7777777777', '7777777777', '7776777677', '7677767776'), // 小暑 0706, 0707, 0708;
'desoe' => array('3343334333', '4333433333', '3333333333', '3333333333', '3333333233', '3233323332', '3332333233', '3233323332', '2332233223', '3223322332'), // 大暑 0722, 0723, 0724;
'ipchu' => array('8888888888', '8788878887', '8887888788', '8788878887', '7887788778', '8778877887', '7887788777', '8777877787', '7787778777', '8777877787'), // 立秋 0807, 0808;
'chosoe' => array('3443344334', '4334433443', '3443334333', '4333433343', '3343334333', '4333333333', '3333333333', '3333333333', '3332333233', '3233323332'), // 處暑 0822, 0823, 0824
'begro' => array('8888888888', '8888888888', '8887888788', '8788878887', '8887888788', '8788877887', '7887788778', '8778877887', '7887778777', '8777877787'), // 白露 0907, 0908
'chubun' => array('3443344333', '4333433343', '3343334333', '4333433343', '3333333333', '3333333333', '3333333333', '3233323332', '3332333233', '3233323332'), // 秋分 0922, 0923, 0924
'hanro' => array('9998999899', '9889988998', '8998899889', '9889988998', '8998889888', '9888988898', '8898888888', '9888888888', '8888888888', '8888888888'), // 寒露 1008, 1009;
'sanggang' => array('4443444344', '4344434443', '4443444334', '4334433443', '3443344334', '4334433343', '3343333333', '4333433343', '3343334333', '3333333333'), // 霜降 1022, 1023, 1024;
'ipdong' => array('8887888788', '8788878887', '8887888778', '8778878887', '7887788778', '8778877887', '7787778777', '8777877787', '7787778777', '8777777777'), // 立冬 1107, 1108;
'sosol' => array('3332333233', '3223322332', '2332233223', '3223322332', '2332223222', '3222322232', '2232223222', '3222322222', '2222222222', '2222222222'), // 小雪 1122, 1123;
'desol' => array('7887788778', '8778877787', '7787778777', '8777877787', '7787778777', '7777777777', '7777777777', '7777777777', '7777777677', '7677767776'), // 大雪 1206, 1207, 1208;
'dongzhi' => array('2232223222', '3222322222', '2222222222', '2222222222', '2222222222', '2122212221', '2221222122', '2122212221', '2221222112', '2112211221') // 冬至 1221, 1222, 1223;
);
/**
* 주어진 연도와 월에 해당하는 24절기 날짜를 반환하는 함수
*
* 이 함수는 입력된 연도와 월을 기준으로, 해당 월의 24절기 날짜를 계산하여 반환합니다.
* 절기 날짜는 지정된 패턴과 연도에 따라 결정되며, 이를 바탕으로 절기 이름과 날짜를 매핑한 배열을 생성합니다.
* 절기 날짜는 음력과 양력의 전통적인 패턴을 따릅니다.
*
* @param int $year 연도 (예: 2024)
* @param string $month 월 (형식: MM, 예: "01" for January)
* @return array 절기 날짜와 이름을 포함하는 연관 배열. 배열의 키는 날짜(형식: MMDD)이고, 값은 절기 이름입니다.
*/
public function setSolarTerms($year, $month) {
// 배열 초기화
$md = array();
if ($year > 1940 && $year < 2041) {
$yearNum1 = (int)(($year - 1941) / 10);
$yearNum2 = (int)(($year - 1941) % 10);
switch ($month) {
case "01":
$md['010' . substr($this->patterns['sohan'][$yearNum1], $yearNum2, 1)] = "소한";
$md['012' . substr($this->patterns['dehan'][$yearNum1], $yearNum2, 1)] = "대한";
break;
case "02":
if (substr($this->patterns['usu'][$yearNum1], $yearNum2, 1) == '9') {
$md['022' . substr($this->patterns['usu'][$yearNum1], $yearNum2, 1)] = "우수";
} else {
$md['021' . substr($this->patterns['usu'][$yearNum1], $yearNum2, 1)] = "우수";
}
$md['020' . substr($this->patterns['ipchun'][$yearNum1], $yearNum2, 1)] = "입춘";
break;
case "03":
$md['030' . substr($this->patterns['gyongchip'][$yearNum1], $yearNum2, 1)] = "경칩";
$md['032' . substr($this->patterns['chunbun'][$yearNum1], $yearNum2, 1)] = "춘분";
break;
case "04":
$md['040' . substr($this->patterns['chongmyong'][$yearNum1], $yearNum2, 1)] = "청명";
if (substr($this->patterns['gogu'][$yearNum1], $yearNum2, 1) == '9') {
$md['041' . substr($this->patterns['gogu'][$yearNum1], $yearNum2, 1)] = "곡우";
} else {
$md['042' . substr($this->patterns['gogu'][$yearNum1], $yearNum2, 1)] = "곡우";
}
break;
case "05":
$md['050' . substr($this->patterns['ipha'][$yearNum1], $yearNum2, 1)] = "입하";
$md['052' . substr($this->patterns['soman'][$yearNum1], $yearNum2, 1)] = "소만";
break;
case "06":
$md['060' . substr($this->patterns['mangzong'][$yearNum1], $yearNum2, 1)] = "망종";
$md['062' . substr($this->patterns['hazhi'][$yearNum1], $yearNum2, 1)] = "하지";
break;
case "07":
$md['070' . substr($this->patterns['sosoe'][$yearNum1], $yearNum2, 1)] = "소서";
$md['072' . substr($this->patterns['desoe'][$yearNum1], $yearNum2, 1)] = "대서";
break;
case "08":
$md['080' . substr($this->patterns['ipchu'][$yearNum1], $yearNum2, 1)] = "입추";
$md['082' . substr($this->patterns['chosoe'][$yearNum1], $yearNum2, 1)] = "처서";
break;
case "09":
$md['090' . substr($this->patterns['begro'][$yearNum1], $yearNum2, 1)] = "백로";
$md['092' . substr($this->patterns['chubun'][$yearNum1], $yearNum2, 1)] = "추분";
break;
case "10":
$md['100' . substr($this->patterns['hanro'][$yearNum1], $yearNum2, 1)] = "한로";
$md['102' . substr($this->patterns['sanggang'][$yearNum1], $yearNum2, 1)] = "상강";
break;
case "11":
$md['110' . substr($this->patterns['ipdong'][$yearNum1], $yearNum2, 1)] = "입동";
$md['112' . substr($this->patterns['sosol'][$yearNum1], $yearNum2, 1)] = "소설";
break;
case "12":
$md['120' . substr($this->patterns['desol'][$yearNum1], $yearNum2, 1)] = "대설";
$md['122' . substr($this->patterns['dongzhi'][$yearNum1], $yearNum2, 1)] = "동지";
break;
}
}
return $md;
}
}
예시....
$year ="2024";
$month = "08";
$Terms = $this->setSolarTerms($year, $month)
print_r($Terms);
?>
댓글목록
등록된 댓글이 없습니다.