date_sunset() 함수란?
PHP의 date_sunset() 함수는 지정한 날짜와 위치(위도·경도)에 대한 일몰 시간을 계산하여 반환하는 내장 함수입니다. 날씨 앱, 출퇴근 시간 계산기, 사진 촬영 스케줄러처럼 해의 움직임 정보가 필요한 서비스를 개발할 때 유용하게 활용할 수 있습니다.
문법(Syntax)
date_sunset(timestamp, format, latitude, longitude, zenith, gmtoffset);
함수는 총 6개의 매개변수를 받으며, timestamp를 제외한 나머지는 선택적으로 지정할 수 있습니다.
매개변수 상세 설명
timestamp − 일몰 시간을 계산할 대상 날짜의 타임스탬프입니다. 보통
time()함수로 현재 시각을 전달합니다.format − 결과를 어떤 형식으로 반환할지 지정합니다.
SUNFUNCS_RET_STRING − 결과를 문자열(string)로 반환합니다. (예: "19:02")
SUNFUNCS_RET_DOUBLE − 결과를 실수(float) 형태의 시간으로 반환합니다.
SUNFUNCS_RET_TIMESTAMP − 결과를 정수형 타임스탬프로 반환합니다.
latitude − 해당 위치의 위도를 지정합니다. 기본값은 북위(North)이며, 남위(South)를 지정하려면 반드시 음수 값을 전달해야 합니다.
longitude − 해당 위치의 경도를 지정합니다. 기본값은 동경(East)이며, 서경(West)을 지정하려면 반드시 음수 값을 전달해야 합니다.
zenith − 태양이 지평선 아래로 내려가는 기준 각도(천정각)입니다. 기본값은 php.ini의
date.sunset_zenith설정값을 따르며, 일반적으로 90을 사용합니다.gmtoffset − GMT(그리니치 표준시)와 현지 시간 간의 시차를 시간 단위로 지정합니다. 한국은 KST 기준으로 9를 전달하면 됩니다.
반환 값(Return Value)
date_sunset() 함수는 성공 시 지정한 format에 맞춰 일몰 시간을 반환하고, 실패 시 FALSE를 반환합니다.
예제 1 – 리스본(포르투갈)의 일몰 시간 구하기
다음은 서경 위치(음수 경도)를 사용하는 예제입니다.
<?php
echo("Date: " . date("D M d Y") . "<br />");
echo(date_sunset(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1));
?>
실행 결과:
Date: Wed Oct 10 2018
19:02
위 코드에서 경도에 -9(서경)를 전달한 점에 주목하세요. 북미나 유럽 서부처럼 서경 지역의 일몰 시간을 구하려면 음수 값을 넣어야 정확한 결과를 얻을 수 있습니다.
예제 2 – 다른 지역의 일몰 시간 구하기
<?php
echo date("D M d Y");
echo("\nSunset time: ");
echo(date_sunset(time(), SUNFUNCS_RET_STRING, 22.9564, 85.8531, 90, 5.45));
?>
실행 결과:
Wed Oct 10 2018
Sunset time: 17:20
이번에는 동경(양수 경도) 지역에 대해 GMT 오프셋을 소수점(5.45)으로 전달했습니다. 인도처럼 시차가 30분·15분 단위로 어긋난 국가의 경우 이렇게 소수 값으로 오프셋을 지정하면 됩니다.
참고 사항
- 일출 시간을 구하려면 같은 원리로
date_sunrise()함수를 사용하면 됩니다. - timestamp는 필수 인자이므로 반드시 유효한 Unix 타임스탬프를 전달해야 합니다.
- 극지방처럼 백야·극야 현상이 발생하는 날짜와 위치에서는 정확한 일몰 시간이 계산되지 않을 수 있으므로, 반환 값이 FALSE인 경우를 처리하는 로직을 함께 작성하는 것이 좋습니다.