웹프로그래밍

Global It Leader!!


PHP


 
 

절기 출력하는 php 소스

페이지 정보

작성자 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 65회 작성일 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);

?>

댓글목록

등록된 댓글이 없습니다.

전체 90
게시물 검색
PHP 목록
번호 제목 글쓴이 조회 날짜
90 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 55 10-09
89 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 55 10-09
88 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 61 10-08
열람중 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 66 09-03
86 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 83 07-26
85 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 71 07-26
84 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 75 07-07
83 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 65 07-07
82 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 86 06-15
81 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 123 04-23
80 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1521 03-29
79 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 3916 03-26
78 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1683 03-26
77 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1508 03-17
76 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2191 11-28
75 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2399 08-11
74 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2021 08-10
73 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2649 08-02
72 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2734 07-20
71 no_profile 운영자쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 1952 07-05