int mktime ([ int $hour= date("H") [, int $minute= date("i") [, int $second= date("s") [, int $month= date("n") [, int $day= date("j") [, int $year= date("Y") [, int $is_dst= -1 ]]]]]]] )
(PHP 4, PHP 5)

이 함수는 얻고 싶은 날짜를 인자로 전달하여 그 날짜에 해당하는 타임 스탬프 값을 얻을 수 있습니다. 이는 gmmktime함수와 동일하게 동작합니다. 차이가 있다면, gmmktime함수는 그리니치 표준시간을 기준으로 한다는 점입니다.

그리니치 표준시간이란? 경도 0도의 그리니치 자오선을 기준으로 한 시간으로 세계 모든 지방의 시간과 관측에 사용하는 표준시의 기본이 됩니다. 우리나라 표준시와는 9시간 정도 차이가 있습니다.

<?php
 // 현제시간 2011/05/17 pm 10:48분입니다.
 // 인자를 지정하지 않으면, 1970년 1월 1일 부터 계산된 현재의 시간을 초로 계산합니다.

 echo mktime(); // 결과: 1305640138 

 echo time(); // 결과: 1305640138 

 echo gmmktime(); // 결과: 1305640138
 ?>

여기서 gmmktime함수와는 차이를 보이지는 않지만, 다음 예제를 보면 결과 값이 다르다는 것을 알 수 있습니다. 그리니치 표준시간으로 9시간 정도 차이가 있으니 같을 수는 없겠죠.

<?php
 echo mktime(0, 0, 0, 1, 1, 1997); // 결과: 852044400  

 echo gmmktime(0, 0, 0, 1, 1, 1997); // 결과: 852076800
 ?>

gmmktime, mktime은 시, 분, 초, 월, 일, 년 으로 인자를 넘겨 주면 됩니다.

<?php
 // 32일은 존재하지 않기 때문에 1998년 1월 1일로 계산되어 집니다.
 echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));
 // 결과: Jan-01-1998

 // 13월은 존재하지 않기 때문에 1998년 1월 1일로 계산되어 집니다.
 echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));
 // 결과: Jan-01-1998

 echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998));
 // 결과: Jan-01-1998

 // 98은 98년, 11은 2011년 등 두 자리로 년도를 지정할 수 있습니다.
 echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 98));
 // 결과: Jan-01-1998

 echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 11));
 // 결과: Jan-01-2011
 ?>

<?php
 echo date("M-d-Y", gmmktime(0, 0, 0, 5, 18, 11));
 // 결과: May-18-2011

 echo date("M-d-Y", mktime(0, 0, 0, 5, 18, 11));
 // 결과: May-18-2011

 // 60초 * 60분 * 24시간 = 86400 (1일)
 echo date("M-d-Y", time()+86400);
 // 결과: May-18-2011
 ?>

0 댓글