mktime() 함수는 지정한 날짜와 시간에 해당하는 유닉스 타임스탬프(Unix Timestamp)를 반환하는 PHP 내장 함수입니다. 여기서 타임스탬프란 유닉스 에포크(Unix Epoch, 1970년 1월 1일 00:00:00 GMT)부터 지정된 시각까지 경과한 초(second) 수를 담고 있는 정수(long integer)입니다.
문법(Syntax)
mktime(hour, minute, second, month, day, year, is_dst);
매개변수(Parameters)
hour − 시(hour)를 지정합니다.
minute − 분(minute)을 지정합니다.
second − 초(second)를 지정합니다.
month − 월(month)을 지정합니다.
day − 일(day)을 지정합니다.
year − 연도(year)를 지정합니다.
is_dst − 서머타임(DST) 적용 여부를 나타내는 매개변수입니다. 다만 mktime()은 항상 GMT 기준 날짜로 계산하므로 이 값은 결과에 영향을 주지 않으며, PHP 7.0.0부터는 해당 매개변수 자체가 제거되었습니다.
반환값(Return)
mktime() 함수는 전달된 인자에 대응하는 유닉스 타임스탬프를 반환합니다. 반환되는 값은 유닉스 에포크(1970년 1월 1일 00:00:00 GMT)부터 지정된 시각까지의 초 수를 담고 있는 정수입니다.
예제 1 − 특정 날짜의 요일 구하기
다음 예제는 mktime()으로 생성한 타임스탬프를 date() 함수와 함께 사용하여 특정 날짜의 요일을 출력합니다.
<?php
echo "March 20, 2017 was on " . date("l", mktime(0, 0, 0, 03, 20, 2017));
?>
출력 결과
March 20, 2017 was on Monday
예제 2 − 범위를 벗어난 값 자동 보정
mktime()은 각 매개변수가 허용 범위를 벗어나더라도 자동으로 올바른 날짜로 보정해 줍니다. 아래 예제에서는 월에 22를 전달했지만, 함수가 이를 해석하여 2019년 10월로 계산한 결과를 확인할 수 있습니다.
<?php
echo date("M-d-Y", mktime(0, 0, 0, 22, 9, 2018)) . "<br>";
?>
출력 결과
Oct-09-2019
참고 사항
- 매개변수 순서가 시 → 분 → 초 → 월 → 일 → 연도 순으로 되어 있어, 일반적인 날짜 표기 순서와 달라 혼동하기 쉽습니다.
- 모든 매개변수는 선택 사항(optional)이며, 값을 생략하면 현재 로컬 날짜와 시간의 해당 값이 기본으로 사용됩니다.