PHP에서 date_sunset () 함수는 위도와 경도 및 날짜에 따라 일몰 시간을 계산할 수 있습니다. Unix 타임 스탬프 또는 형식의 시간 문자열을 반환합니다. 그러나이 기능 자체는 다국어 출력 또는 다른 국제화 (I18N) 시간 형식을 직접 지원하지 않습니다. 그렇다면 date_sunset ()를 지원하는 방법 다국어 및 현지화 된 디스플레이를 지원하는 방법은 무엇입니까? 이 기사를 사용하면 단계별로 구현할 수 있습니다.
먼저 date_sunset () 의 기본 사용법을 이해해 봅시다.
<?php
$timestamp = strtotime('2025-04-26');
$latitude = 37.7749; // 예를 들어:샌프란시스코
$longitude = -122.4194;
$sunset = date_sunset(
$timestamp,
SUNFUNCS_RET_TIMESTAMP,
$latitude,
$longitude,
90,
0
);
echo date('H:i:s', $sunset);
?>
위의 코드는 일몰 시간을 출력하지만 시간 형식은 고정되어 있으며 수동으로 포맷해야합니다. 그리고 로케일은 고려되지 않습니다.
다국어 및 국제화를 달성하기 위해 PHP의 intldateformatter 클래스를 결합 할 수 있습니다.이 클래스는 Intl 확장에서 제공되는 강력한 도구입니다.
먼저 서버에 Intl 확장자가 설치되어 있는지 확인하십시오. 그렇지 않은 경우 여기에서 설치를 참조하십시오 : https://www.m66.net/php-intl-install-guide
다음은 완전히 개선 된 코드 예입니다.
<?php
$timestamp = strtotime('2025-04-26');
$latitude = 37.7749; // 위도
$longitude = -122.4194; // 경도
// 일몰 타임 스탬프를 얻으십시오
$sunset = date_sunset(
$timestamp,
SUNFUNCS_RET_TIMESTAMP,
$latitude,
$longitude,
90,
0
);
// 언어와 지역을 설정하십시오,예를 들어法语法国
$locale = 'fr_FR'; // 변경할 수 있습니다 'zh_CN'、'en_US'、'de_DE' 기다리다
// 시간대를 설정하십시오
$timezone = 'Europe/Paris'; // 필요에 따라 올바른 시간대를 설정하십시오
// 형성자를 만듭니다
$formatter = new IntlDateFormatter(
$locale,
IntlDateFormatter::FULL,
IntlDateFormatter::SHORT,
$timezone,
IntlDateFormatter::GREGORIAN
);
// 일몰 시간 형식
$localizedSunset = $formatter->format($sunset);
echo "일몰 시간(현지화): " . $localizedSunset;
?>
로케일은 중국어, 프랑스어, 독일어 등과 같은 출력 언어를 제어합니다.
TimeZone은 출력 시간대를 제어하여 올바른 시간을 보장합니다.
intldateformatter는 "2025 년 4 월 26 일"을 "26 Avril 2025"(프랑스 형식)로 돌리는 것과 같은 언어 습관에 따라 날짜를 자동으로 포맷 할 수 있습니다.
웹 사이트가 URL 매개 변수에서 언어 코드를 전달하는 것과 같은 언어를 선택할 수 있으면 다음을 수행 할 수 있습니다.
<?php
$locale = isset($_GET['lang']) ? $_GET['lang'] : 'en_US';
$formatter = new IntlDateFormatter(
$locale,
IntlDateFormatter::FULL,
IntlDateFormatter::SHORT,
'UTC',
IntlDateFormatter::GREGORIAN
);
$sunset = date_sunset(
strtotime('2025-04-26'),
SUNFUNCS_RET_TIMESTAMP,
37.7749,
-122.4194,
90,
0
);
echo $formatter->format($sunset);
?>
방문하면 https://www.m66.net/sunset.php?lang=de_de를 방문하면 일몰 시간이 독일 형식으로 표시됩니다.
시간과 분만 표시하는 등 출력 형식을 완전히 사용자 정의하려면 사용자 정의 모드를 더 지정할 수 있습니다.
$formatter = new IntlDateFormatter(
'zh_CN',
IntlDateFormatter::NONE,
IntlDateFormatter::NONE,
'Asia/Shanghai',
IntlDateFormatter::GREGORIAN,
'HH:mm'
);
이 설정은 18:45 와 같은 시간 형식을 출력하며, 이는 모바일에 매우 적합하거나 간단한 인터페이스가 필요한 경우에 매우 적합합니다.
date_sunset () 자체는 다국어 및 국제화를 지원하지 않지만 intldateformatter 와 함께 사용할 수 있습니다.
로케일 과 시간대를 올바르게 설정해야합니다.
사용자가 언어를 동적으로 전환 할 수있게하면 사용자 경험을 크게 향상시킬 수 있습니다.
이것을 이해하는 한, 비슷한 날짜 시간 기능 (예 : date_sunrise () )도 같은 방식으로 국제화 될 수 있습니다.