oops-Lunar
[ class tree: oops-Lunar ] [ index: oops-Lunar ] [ all elements ]

Class: Lunar

Source Location: /Lunar/Lunar.php

Class Overview

Lunar_API
   |
   --Lunar

양력/음력 변환 클래스


Author(s):

Copyright:

  • (c) 2024, OOPS.org

Methods


Inherited Variables

Inherited Methods

Class: Lunar_API

Lunar_API::degreelow()
미지의 각도를 0~360도 이내로 만듬
Lunar_API::disp2days()
y1,m1,d1일부터 y2,m2,d2까지의 일수 계산
Lunar_API::disptimeday()
year의 1월 1일부터 해당 일자까지의 날자수
Lunar_API::div()
정수 몫을 반환
Lunar_API::get28sday()
그레고리력의 날자에 대한 28수를 구함
Lunar_API::getdatebymin()
uyear,umonth,uday,uhour,umin으로부터 tmin(분)떨이진 시점의 년월일시분(태양력) 구하는 프로시져
Lunar_API::getlunarfirst()
그레고리력 년월일이 들어있는 태음월의 시작합삭일지, 망일시, 끝합삭일시를 구함
Lunar_API::getminbytime()
uy,umm,ud,uh,umin과 y1,mo1,d1,h1,mm1사이의 시간(분)
Lunar_API::getweekday()
그레고리력 날자를 요일의 배열 번호로 변환
Lunar_API::lunartosolar()
음력 날자를 양력 날자로 변환
Lunar_API::moonsundegree()
태양황력과 달황경의 차이 (1996 기준)
Lunar_API::solartolunar()
양력 날자를 음력 날자로 변환
Lunar_API::solortoso24()
절기 시간 구하기
Lunar_API::sydtoso24yd()
그레고리력의 년월시일분으로 60년의 배수, 세차, 월건(태양력), 일진, 시주를 구함

Class Details

[line 122]
양력/음력 변환 클래스

이 패키지는 양력/음력간의 변환을 제공한다.

1852년 10월 15일 이전의 양력 날자는 율리우스력으로 취급을 하며, 내부 계산시에 그레고리력으로 변환을 하여 계산을 한다.

제공 되는 기능은 다음과 같다.

  1. 양력/음력 변환 API
  2. 절기 API
  3. 합삭/막 정보 API
  4. 세차/월간/일진 API 등
이 변환 API의 유효기간은 다음과 같다.

   * 32bit
     + -2087-02-09(음력 -2087-01-01) ~ 6078-01-29(음 6077-12-29)
     + -2087-07-05(음력 -2087-05-29) 이전은 계산이 무지 느려짐..

   * 64bit
     + -4712-02-08 ~ 9999-12-31
     + API의 연도 체크가 4자리 까지이므로 10000년 이상은 확인 못함
     + 64bit 계산이 가능한 시점까지 가능할 듯..
     + 기원전의 경우 Julian date가 BC 4713년 1월 1일 부터이므로
       Gregorian calendar 변환이 가능한 BC 4713년 2월 8일부터 가능

계산 처리 시간상, 과거 2000년전과 미래 100년후의 시간은 왠만하면 웹에서는 사용하는 것을 권장하지 않음!

참고!

oops\KASI_Lunar pear package를 설치한 후에, KASI_Lunar.php 를 include 하면, 내부적으로 1391-02-05 ~ 2050-12-31 기간은 천문과학연구원의 음양력 DB를 이용하여 처리를 한다.




Tags:

author:  JoungKyun.Kim <http://oops.org>
copyright:  (c) 2024, OOPS.org
example:  Sample code
license:  BSD


[ Top ]


Class Methods


method cal2jd [line 575]

int cal2jd( array $v, [ $julian = false])

Gregorian 날자를 Julian date로 변환



Tags:

return:  Julian date
access:  public


Parameters:

array   $v   연월일 배열 : array ($y, $m, $d)
   $julian  

[ Top ]

method dayfortune [line 967]

stdClass dayfortune( [int|string $v = null])

세차(년)/월건(월)/일진(일) 데이터를 구한다.

예제:

  1.  
  2. /*
  3.  * $lunar->dayfortuen ($date)
  4.  *
  5.  * input:
  6.  *        2013-07-16 or
  7.  *        2013-7-16  or
  8.  *        20130716   or
  9.  *        1373900400 or
  10.  *        NULL
  11.  *
  12.  * output:
  13.  *        stdClass Object
  14.  *        (
  15.  *            [data] => stdClass Object
  16.  *                (
  17.  *                     [y] => 29           // 세차 index
  18.  *                     [m] => 55           // 월건 index
  19.  *                     [d] => 19           // 일진 index
  20.  *                )
  21.  *   
  22.  *            [year] => 계사               // 세차 값
  23.  *            [month] => 기미              // 월건 값
  24.  *            [day] => 계미                // 일진 값
  25.  *            [hyear] => 癸巳              // 한자 세차 값
  26.  *            [hmonth] => 己未             // 한자 월건 값
  27.  *            [hday] => 癸未               // 한자 일진 값
  28.  *        )
  29.  */
  30.  
  31. print_r ($lunar->dayfortune ('2013-07-16'));
  32.  
  33. /*
  34.  * 7월 1일 부터 30일 까지의 일진을 구할 경우
  35.  * 다음은 아주 안좋은 방법이다.
  36.  */
  37.  
  38. for $i=1$i<31$i++ {
  39.     $r $lunar->dayfortune ('2013-07-' $i);
  40.     $iljin[$i$r->day;
  41. }
  42.  
  43. /*
  44.  * 위의 경우는 아래와 같이 $lunar->ganji_ref method를 이용하여
  45.  * 성능을 높일 수 있다.
  46.  */
  47.  
  48. $r $lunar->dayfortune ('2013-07-01');
  49. $iljin[$i$r->day;
  50. $gindex $r->data->d;
  51.  
  52. for $i=2$i<31$i++ {
  53.     $gindex++;
  54.     if $gindex >= 60 )
  55.         $gindex -= 60;
  56.     $iljin[$i$lunar->ganji_ref[$gindex];




Tags:

return:  
   stdClass Object
   (
       [data] => stdClass Object
           (
                [y] => 29           // 세차 index
                [m] => 55           // 월건 index
                [d] => 19           // 일진 index
           )

       [year] => 계사               // 세차 값
       [month] => 기미              // 월건 값
       [day] => 계미                // 일진 값
       [hyear] => 癸巳              // 한자 세차 값
       [hmonth] => 己未             // 한자 월건 값
       [hday] => 癸未               // 한자 일진 값
   )
access:  public


Parameters:

int|string   $v  

날자형식

  • unixstmap (1970년 12월 15일 이후부터 가능)
  • Ymd or Y-m-d
  • null data (현재 시간)
  • 1582년 10월 15일 이전의 날자는 율리우스력의 날자로 취급함.


[ Top ]

method ganji_ref [line 1363]

string ganji_ref( int $no, [bool $mode = false])

dayfortune method의 ganji index 반환값을 이용하여, ganji 값을 구함

예제:

  1.  
  2. /*
  3.  * $lunar->dayfortuen ($date)
  4.  *
  5.  * input:
  6.  *        2013-07-16 or
  7.  *        2013-7-16  or
  8.  *        20130716   or
  9.  *        1373900400 or
  10.  *        NULL
  11.  *
  12.  * output:
  13.  *        stdClass Object
  14.  *        (
  15.  *            [data] => stdClass Object
  16.  *                (
  17.  *                     [y] => 29           // 세차 index
  18.  *                     [m] => 55           // 월건 index
  19.  *                     [d] => 19           // 일진 index
  20.  *                )
  21.  *   
  22.  *            [year] => 계사               // 세차 값
  23.  *            [month] => 기미              // 월건 값
  24.  *            [day] => 계미                // 일진 값
  25.  *            [hyear] => 癸巳              // 한자 세차 값
  26.  *            [hmonth] => 己未             // 한자 월건 값
  27.  *            [hday] => 癸未               // 한자 일진 값
  28.  *        )
  29.  */
  30.  
  31. print_r ($lunar->dayfortune ('2013-07-16'));
  32.  
  33. /*
  34.  * 7월 1일 부터 30일 까지의 일진을 구할 경우
  35.  * 다음은 아주 안좋은 방법이다.
  36.  */
  37.  
  38. for $i=1$i<31$i++ {
  39.     $r $lunar->dayfortune ('2013-07-' $i);
  40.     $iljin[$i$r->day;
  41. }
  42.  
  43. /*
  44.  * 위의 경우는 아래와 같이 $lunar->ganji_ref method를 이용하여
  45.  * 성능을 높일 수 있다.
  46.  */
  47.  
  48. $r $lunar->dayfortune ('2013-07-01');
  49. $iljin[$i$r->day;
  50. $gindex $r->data->d;
  51.  
  52. for $i=2$i<31$i++ {
  53.     $gindex++;
  54.     if $gindex >= 60 )
  55.         $gindex -= 60;
  56.     $iljin[$i$lunar->ganji_ref[$gindex];




Tags:

access:  public


Parameters:

int   $no   ganji index number
bool   $mode   출력 모드 (false => 한글, true => 한자)

[ Top ]

method human_year [line 213]

string human_year( int $y)

연도를 human readable하게 표시

예제:

  1.  
  2. /*
  3.  * $lunar->human_year ($y)
  4.  *
  5.  * input:
  6.  *        -2334
  7.  *
  8.  * output:
  9.  *        BC 2333
  10.  */




Tags:

return:  AD/BC type의 연도
access:  public


Parameters:

int   $y   연도

[ Top ]

method is_gregorian [line 316]

bool is_gregorian( int $y, int $m, [int $d = 1])

해당 날자가 gregorian 범위인지 체크



Tags:

access:  public


Parameters:

int   $y   연도
int   $m  
int   $d  

[ Top ]

method is_leap [line 291]

bool is_leap( int $y, [bool $julian = false])

윤년 체크

예제:

  1.  
  2. /*
  3.  * $lunar->is_reap ($y)
  4.  *
  5.  * input:
  6.  *        1992 (양력)
  7.  *
  8.  * output:
  9.  *        true
  10.  */
  11.  
  12. if $lunar->is_leap (1992) )
  13.     echo "This is Yoon Year\n";
  14. else




Tags:

access:  public


Parameters:

int   $y   년도
bool   $julian   Julian 여부 <p> 1582년 이전은 Julian calender로 판단하여 이 값이 false라도 율리우스력으로 간주하여 판단한다. (sinse 1.0.1) </p>

[ Top ]

method moonstatus [line 1283]

stdClass moonstatus( [int|string $v = null])

양력일에 대한 음력월 합삭/망 데이터 구하기

예제:

  1.  
  2. /*
  3.  * $lunar->moonstatus ($date)
  4.  *
  5.  * input:
  6.  *        2013-07-16 or
  7.  *        2013-7-16  or
  8.  *        20130716   or
  9.  *        1373900400 or
  10.  *        NULL
  11.  *
  12.  * output:
  13.  *   stdClass Object
  14.  *   (
  15.  *       [new] => stdClass Object
  16.  *           (
  17.  *               [hyear] => AD 2013
  18.  *               [year] => 2013
  19.  *               [month] => 7
  20.  *               [day] => 8
  21.  *               [hour] => 16
  22.  *               [min] => 15
  23.  *           )
  24.  *
  25.  *       [full] => stdClass Object
  26.  *           (
  27.  *               [hyear] => AD 2013
  28.  *               [year] => 2013
  29.  *               [month] => 7
  30.  *               [day] => 23
  31.  *               [hour] => 2
  32.  *               [min] => 59
  33.  *           )
  34.  *   )
  35.  */
  36.  
  37. print_r ($lunar->moonstatus ('2013-07-01'));
  38.  
  39. /*
  40.  * 합삭/망 정보의 경우, 한달에 음력월이 2개가 있으므로,
  41.  * 1일의 정보만 얻어서는 합삭/망 중에 1개의 정보만 나올 수 있다.
  42.  * 그러므로, 1일의 데이터를 얻은 다음, 음력 1일의 정보까지 구하면
  43.  * 한달의 합삭/망 정보를 모두 표현할 수 있다.
  44.  */
  45.  
  46. $lun $lunar->tolunar ('2013-07-01');
  47.  
  48. if $lun->largemonth // 평달의 경우 마지막이 29일이고 큰달은 30일이다.
  49.     $plus 29 $lun->day;
  50. else
  51.     $plus 30 $lun->day;
  52.  
  53. $r1 $lunar->moonstatus ('2013-07-01');           // 음력 2013-05-23
  54. $r2 $lunar->moonstatus ('2013-07-' $plus)// 음력 2013-06-01
  55.  
  56. print_r ($r1);




Tags:

return:  

합삭/망 object

   stdClass Object
   (
       [new] => stdClass Object      // 합삭 (New Moon) 데이터
           (
               [hyear] => AD 2013          // 합삭 AD/BC 형식 연도
               [year] => 2013              // 합삭 연도
               [month] => 7                // 합삭 월
               [day] => 8                  // 합삭 일
               [hour] => 16                // 합삭 시간
               [min] => 15                 // 합삭 분
               [julian] => 2456481.8020833 // Julian date (UTC)
           )

       [full] => stdClass Object     // 망 (Full Moon) 데이터
           (
               [hyear] => AD 2013          // 망 AD/BC 형식 연도
               [year] => 2013              // 망 연도
               [month] => 7                // 망 월
               [day] => 23                 // 망 일
               [hour] => 2                 // 망 시간
               [min] => 59                 // 망 분
               [julian] => 2456496.2493056 // Julian date (UTC)
           )
   )

access:  public


Parameters:

int|string   $v  

날자형식

  • unixstmap (1970년 12월 15일 이후부터 가능)
  • Ymd or Y-m-d
  • null data (현재 시간)
  • 1582년 10월 15일 이전의 날자는 율리우스력의 날자로 취급함.


[ Top ]

method s28day [line 1015]

stdClass s28day( [int|string $v = null])

특정일의 28수를 구한다.

예제:

  1.  
  2. /*
  3.  * $lunar->s28day ($date)
  4.  *
  5.  * input:
  6.  *        2013-07-16 or
  7.  *        2013-7-16  or
  8.  *        20130716   or
  9.  *        1373900400 or
  10.  *        NULL
  11.  *
  12.  * output:
  13.  *        stdClass Object
  14.  *        (
  15.  *            [data] => 5
  16.  *            [k] => 미
  17.  *            [h] => 尾
  18.  *        )
  19.  */
  20.  
  21. print_r ($lunar->s28day ('2013-07-16'));
  22.  
  23. /*
  24.  * 역시 7/1 부터 7/30 까지의 일진을 구할 경우에는 다음과 같이
  25.  * 하면 성능이 매우 좋아진다.
  26.  */
  27.  
  28. $s28 null;
  29. for $i=0$i<30$i++ {
  30.     if $s28 === null )
  31.         $s28 $lunar->s28day ('2013-07-01');
  32.     else
  33.         $s28 $lunar->s28day ($s28);
  34.  
  35.     $s28v[$i$s28->k;




Tags:

return:  
   stdClass Object
   (
       [data] => 5    // 28수 index
       [k] => 미      // 한글 28수 값
       [h] => 尾      // 한자 28수 값
   )
access:  public


Parameters:

int|string   $v  

날자형식

  • unixstmap (1970년 12월 15일 이후부터 가능)
  • Ymd or Y-m-d
  • null data (현재 시간)
  • 1582년 10월 15일 이전의 날자는 율리우스력의 날자로 취급함.
  • Recursion s28day return value:
    loop에서 s28day method를 반복해서 호출할 경우 return value를 이용할 경우, return value의 index값을 이용하여 계산을 하지 않아 속도가 빠름.


[ Top ]

method seasondate [line 1102]

stdClass seasondate( [int|string $v = null])

해당 양력일에 대한 음력 월의 절기 시간 구하기

2.0.1 부터는 KASI-Lunar 2.0.0 이상이 설치 되어 있을 경우, 천문과학연구원의 2004~2026 의 절기 데이터를 이용한다.

예제:

  1.  
  2. /*
  3.  * $lunar->seasondate ($date)
  4.  *
  5.  * input:
  6.  *        2013-07-16 or
  7.  *        2013-7-16  or
  8.  *        20130716   or
  9.  *        1373900400 or
  10.  *        NULL
  11.  *
  12.  * output:
  13.  *        stdClass Object
  14.  *        (
  15.  *            [center] => stdClass Object
  16.  *                (
  17.  *                    [name] => 소서
  18.  *                    [hname] => 小暑
  19.  *                    [hyear] => AD 2013
  20.  *                    [year] => 2013
  21.  *                    [month] => 7
  22.  *                    [day] => 7
  23.  *                    [hour] => 7
  24.  *                    [min] => 49
  25.  *                )
  26.  *  
  27.  *            [ccenter] => stdClass Object
  28.  *                (
  29.  *                    [name] => 대서
  30.  *                    [hname] => 大暑
  31.  *                    [hyear] => AD 2013
  32.  *                    [year] => 2013
  33.  *                    [month] => 7
  34.  *                    [day] => 23
  35.  *                    [hour] => 1
  36.  *                    [min] => 11
  37.  *                )
  38.  *  
  39.  *            [nenter] => stdClass Object
  40.  *                (
  41.  *                    [name] => 입추
  42.  *                    [hname] => 立秋
  43.  *                    [hyear] => AD 2013
  44.  *                    [year] => 2013
  45.  *                    [month] => 8
  46.  *                    [day] => 7
  47.  *                    [hour] => 17
  48.  *                    [min] => 36
  49.  *                )
  50.  *        )
  51.  */




Tags:

return:  

현달 초입/중기와 다음달 초입 데이터 반환

   stdClass Object
   (
       [center] => stdClass Object      // 이번달 초입 데이터
           (
               [name] => 소서              // 절기 이름
               [hname] => 小暑             // 절기 한자 이름
               [hyear] => AD 2013          // AD/BC 형식 연도
               [year] => 2013              // 초입 연도
               [month] => 7                // 초입 월
               [day] => 7                  // 초입 일
               [hour] => 7                 // 초입 시간
               [min] => 49                 // 초입 분
               [julian] => 2456480.4506944 // Julian date (UTC)
           )

       [ccenter] => stdClass Object     // 이번달 중기 데이터
           (
               [name] => 대서              // 절기 이름
               [hname] => 大暑             // 절기 한자 이름
               [hyear] => AD 2013          // AD/BC 형식 연도
               [year] => 2013              // 중기 연도
               [month] => 7                // 중기 월
               [day] => 23                 // 중기 일
               [hour] => 1                 // 중기 시간
               [min] => 11                 // 중기 분
               [julian] => 2456496.1743056 // Julian date (UTC)
           )

       [nenter] => stdClass Object      // 다음달 초입 데이터
           (
               [name] => 입추              // 절기 이름
               [hname] => 立秋             // 절기 한자 이름
               [hyear] => AD 2013          // AD/BC 형식 연도
               [year] => 2013              // 초입 연도
               [month] => 8                // 초입 월
               [day] => 7                  // 초입 일
               [hour] => 17                // 초입 시간
               [min] => 36                 // 초입 분
               [julian] => 2456511.8583333 // Julian date (UTC)
           )
   )

access:  public


Parameters:

int|string   $v  

날자형식

  • unixstmap (1970년 12월 15일 이후부터 가능)
  • Ymd or Y-m-d
  • null data (현재 시간
  • 1582년 10월 15일 이전의 날자는 율리우스력의 날자로 취급함.


[ Top ]

method split_date [line 235]

array split_date( array|string $date)

YYYY-MM-DD 또는 array ((string) YYYY, (string) MM, (string) DD) 입력값을 * array ((int) $y, (int) $m, (int) $d)으로 변환



Tags:

return:  array ((int) $y, (int) $m, (int) $d)
access:  public


Parameters:

array|string   $date   - YYYY-MM-DD
  • array ((string) YYYY, (string) MM, (stirng) DD)

[ Top ]

method toargs [line 162]

array toargs( string|int &$v, [ $lunar = false])

입력된 날자 형식을 연/월/일의 멤버를 가지는 배열로 반환한다.

입력된 변수 값은 YYYY-MM-DD 형식으로 변환 된다.

예제:

  1.  
  2. /*
  3.  * $lunar->toargs (&$v)
  4.  *
  5.  * input:
  6.  *        2013-07-13
  7.  *        2013-7-13
  8.  *        20130713
  9.  *        1373641200
  10.  *        Null
  11.  *
  12.  * output:
  13.  *       Array
  14.  *       (
  15.  *           [0] => 2013
  16.  *           [1] => 7
  17.  *           [2] => 13
  18.  *       )
  19.  *
  20.  * and reference variavble $v is changed to '2013-07-13'
  21.  */
  22.  
  23. $v '2013-7-13';
  24. $r $lunar->toargs ($v);
  25. echo "### $v\n";




Tags:

return:  
       Array
       (
           [0] => 2013
           [1] => 7
           [2] => 16
       )
access:  public


Parameters:

string|int   &$v  

날자형식

  • unixstmap (1970년 12월 15일 이후부터 가능)
  • Ymd or Y-m-d
  • null data (현재 시간)

   $lunar  

[ Top ]

method tolunar [line 726]

stdClass tolunar( [int|string $v = null])

양력 날자를 음력으로 변환

진짜 만세력은 1582/10/15(Gregorian calendar의 시작) 이전의 날자 역시 Gregorian으로 표기를 한다. 그러므로 Calendar의 오류로 보일 수도 있다. (실제로는 계산상의 오류는 없다고 봐야 한다.)

이런 부분을 보정하기 위하여, tolunar method는 1582/10/04 까지의 날자는 julian calendar로 변환을 하여 음력날자를 구한다. 이로 인 하여 1582/10/15 이전의 음력 날자는 original 진짜 만세력과 다른 값을 가지게 된다.)

이렇게 표현될 경우, 천문우주 지식정보의 값과 비슷하게 나올 수는 있으나, 평달/큰달 계산은 진짜 만세력의 것을 이용하므로 오차는 발생할 수 있다. http://astro.kasi.re.kr/Life/ConvertSolarLunarForm.aspx?MenuID=115

2.0 부터는 이러한 오차를 줄이기 위하여 oops\KASI_Lunar package가 설치되어 있을 경우, 1392-02-05 ~ 2050-12-31 기간에 대해서는 천문과학연구원의 데이터를 이용할 수 있도록 지원한다.

예제:

  1.  
  2. /*
  3.  * $lunar->tolunar ($date)
  4.  *
  5.  * input:
  6.  *        2013-07-16 or
  7.  *        2013-7-16  or
  8.  *        20130716   or
  9.  *        1373900400 or
  10.  *        NULL
  11.  *
  12.  * output
  13.  *        stdClass Object
  14.  *        (
  15.  *            [fmt] => 2013-06-09
  16.  *            [dangi] => 4346
  17.  *            [hyear] => AD 2013
  18.  *            [year] => 2013
  19.  *            [month] => 6
  20.  *            [day] => 9
  21.  *            [leap] =>
  22.  *            [largemonth] => 1
  23.  *            [week] => 화
  24.  *            [hweek] => 火
  25.  *            [unixstamp] => 1373900400
  26.  *            [ganji] => 계사
  27.  *            [hganji] => 癸巳
  28.  *            [gan] => 계
  29.  *            [hgan] => 癸
  30.  *            [ji] => 사
  31.  *            [hji] => 巳
  32.  *            [ddi] => 뱀
  33.  *        )
  34.  */




Tags:

return:  

음력 날자 정보 반환

   stdClass Object
   (
       [fmt] => 2013-06-09          // YYYY-MM-DD 형식의 음력 날자
       [dangi] => 4346              // 단기
       [hyear] => AD 2013           // AD/BC 형식의 연도
       [year] => 2013               // 연도
       [month] => 6                 // 월
       [day] => 9                   // 일
       [leap] =>                    // 음력 윤달 여부
       [largemonth] => 1            // 평달/큰달 여부
       [week] => 화                 // 요일
       [hweek] => 火                // 한자 요일
       [unixstamp] => 1373900400    // unixstamp (양력 날자)
       [ganji] => 계사              // 세차(년)
       [hganji] => 癸巳             // 한자 세차
       [gan] => 계                  // 세차 10간
       [hgan] => 癸                 // 세차 한자 10간
       [ji] => 사                   // 세차 12지
       [hji] => 巳                  // 세차 한자 12지
       [ddi] => 뱀                  // 띠
   )

access:  public


Parameters:

int|string   $v   날자형식
  • unixstmap (1970년 12월 15일 이후부터 가능)
  • Ymd or Y-m-d
  • null data (현재 시간)
  • 1582년 10월 15일 이전의 날자는 율리우스력의 날자로 취급함.

[ Top ]

method tosolar [line 848]

stdClass tosolar( [int|string $v = null], [bool $leap = false])

음력 날자를 양력으로 변환.

구하는 음력월이 윤달인지 여부를 알 수 없을 경우, tosolar method 를 실행하여 얻은 양력 날자를 다시 tolunar로 변환하여 비교하여 동일하지 않다면, 윤달 파라미터 값을 주고 다시 구해야 한다!

진짜 만세력은 Gregorian으로 표기를 하기 때문에, 양력 1582-10-15 이전의 경우에는 return object의 julian member 값으로 비교를 해야 한다.

예제:

  1.  
  2. /*
  3.  * $lunar->tosolar ($date)
  4.  *
  5.  * input:
  6.  *        2013-06-09 or
  7.  *        2013-6-09  or
  8.  *        20130609   or
  9.  *        NULL
  10.  *
  11.  * output
  12.  *        stdClass Object
  13.  *        (
  14.  *            [fmt] => 2013-07-16
  15.  *            [dangi] => 4346
  16.  *            [hyear] => AD 2013
  17.  *            [year] => 2013
  18.  *            [month] => 7
  19.  *            [day] => 16
  20.  *            [week] => 화
  21.  *            [hweek] => 火
  22.  *            [unixstamp] => 1373900400
  23.  *            [ganji] => 계사
  24.  *            [hganji] => 癸巳
  25.  *            [gan] => 계
  26.  *            [hgan] => 癸
  27.  *            [ji] => 사
  28.  *            [hji] => 巳
  29.  *            [ddi] => 뱀
  30.  *        )
  31.  */
  32.  
  33. print_r ($lunar->tosolar ('2013-06-09'));
  34.  
  35. /*
  36.  * 구하는 음력월의 윤달 여부를 모른다면 다음과 같이 확인
  37.  * 과정이 필요하다.
  38.  */
  39. $lun '2013-06-09';
  40. $solv $lunar->tosolar ($lun);
  41. $lunv $lunar->tolunar ($sol->fmt);
  42. if $lun != $lunv->fmt )




Tags:

return:  

양력 날자 정보 object 반환

   stdClass Object
   (
       [jd] => 2456527             // Julian Date Count
       [fmt] => 2013-07-16         // YYYY-MM-DD 형식의 양력 날자 (15821015 이전은 율리우스력)
       [gregory] => 2013-07-16     // Gregory Calendar
       [julian] => 2013-08-09      // Julian Calendar
       [dangi] => 4346             // 단기 (양력)
       [hyear] => AD 2013          // AD/BC 형식 년도
       [year] => 2013              // 양력 연도
       [month] => 7                // 월
       [day] => 16                 // 일
       [week] => 화                // 요일
       [hweek] => 火               // 한자 요일
       [unixstamp] => 1373900400   // unixstamp (양력)
       [ganji] => 계사             // 세차
       [hganji] => 癸巳            // 세차 한자
       [gan] => 계                 // 세차 10간
       [hgan] => 癸                // 세차 한자 10간
       [ji] => 사                  // 세차 12지
       [hji] => 巳                 // 세차 한자 12지
       [ddi] => 뱀                 // 띠
   )

access:  public


Parameters:

int|string   $v  

날자형식

  • unixstmap (1970년 12월 15일 이후부터 가능)
  • Ymd or Y-m-d
  • null data (현재 시간)

bool   $leap   윤달여부

[ Top ]

method version [line 132]

string version( )

oops\Lunar package 의 버전을 반환.



Tags:

access:  public


[ Top ]


Documentation generated on Fri, 30 Aug 2024 06:10:50 +0900 by phpDocumentor 1.4.4