PHPでは、 date_sunset()関数を使用して、特定の日付と緯度で日没時間を計算できます。また、 Mktime()を使用してタイムスタンプを手動で構築して、タイムゾーンの違いをより柔軟に処理するか、さらに時間の計算を実行する必要があります。この記事では、実用的な例を使用して、これらの2つの機能を正しく使用する方法を説明します。
一般的に、 mktime()は、特定の日と時間の間、Unixタイムスタンプをすばやく生成するのに役立ちます。たとえば、2025年4月26日の正午12時にタイムスタンプを生成したい場合は、これを行うことができます。
<?php
$timestamp = mktime(12, 0, 0, 4, 26, 2025);
echo "手動で生成されたタイムスタンプはです: " . $timestamp;
?>
生成された$タイムスタンプは、後続のdate_sunset()への入力として使用できます。
date_sunset()は、タイムスタンプを受け入れ、指定された緯度と経度に基づいてその日の日没時間を計算します。基本的な使用法は次のとおりです。
<?php
$latitude = 34.0522; // たとえば、ロサンゼルスの緯度
$longitude = -118.2437; // ロサンゼルスの経度
$sunset = date_sunset(
$timestamp,
SUNFUNCS_RET_STRING, // フォーマットに戻ります,これが戻り文字列形式です
$latitude,
$longitude,
90, // 高度角,デフォルトはです90度
0 // GMTオフセット,ここに設定されています0
);
echo "日没の時間(UTC)はい: " . $sunset;
?>
注:獲得する時間はUTC時間であり、ローカルタイムゾーンに従って調整されません。
ローカルタイムゾーンで日没時間を取得したい場合は、 date_sunset()で正しいGMTオフセットを設定したり、手動で変換したりできます。たとえば、北京時間(東第8地区)はGMT+8に対応しています。
<?php
$gmtOffset = 8; // 東第8地区
$sunset_local = date_sunset(
$timestamp,
SUNFUNCS_RET_STRING,
$latitude,
$longitude,
90,
$gmtOffset
);
echo "日没の時間(現地時間)はい: " . $sunset_local;
?>
このようにして、地元の日没時間を直接取得できます。これは非常に便利です!
日付を入力した後、特定の場所で日没時間を自動的に出力し、表示ページ( M66.NETの天気情報ページなど)にリンクするウィジェットを開発するとします。あなたはこれを行うことができます:
<?php
$date = '2025-04-26'; // ユーザーが入力した日付
list($year, $month, $day) = explode('-', $date);
// タイムスタンプを作成します
$timestamp = mktime(12, 0, 0, $month, $day, $year);
// 地理的な場所を設定します(たとえば、上海)
$latitude = 31.2304;
$longitude = 121.4737;
// 计算日没の時間(上海はい東第8地区)
$sunset = date_sunset(
$timestamp,
SUNFUNCS_RET_STRING,
$latitude,
$longitude,
90,
8
);
// 出力結果,リンクを添付します
echo "存在する {$date},上海的日没の時間はい: {$sunset}。<br>";
echo "より多くの天気情報をご覧ください,訪問してください <a href='https://m66.net/weather'>m66.net/weather</a>";
?>
この例では、日没時間を正しく計算しただけでなく、 M66.NETへのリンクを組み合わせて、実際に利用可能な小さな関数を形成しました。
mktime()とdate_sunset()を組み合わせることにより、任意の日付のサンセットタイムクエリを柔軟に処理でき、ローカルタイムゾーンに簡単に調整できます。気象アプリケーション、旅行の推奨ツール、または簡単な日常情報表示を開発しているかどうかにかかわらず、このテクノロジーは非常に実用的です。