PHPでは、 date_sunset()は、指定された日付、地理的位置、およびその他のパラメーターに基づいて、太陽の日没時間を計算するために使用できる非常に実用的な機能です。この記事では、この関数を使用してグリニッジ時間(GMT)の下で日没時間を取得する方法を紹介し、特定の使用法の例を示します。
date_sunset(
int $timestamp,
int $format = SUNFUNCS_RET_STRING,
?float $latitude = ini_get("date.default_latitude"),
?float $longitude = ini_get("date.default_longitude"),
float $zenith = ini_get("date.sunset_zenith"),
float $gmt_offset = ini_get("date.default_timezone") // PHP 8.1+ 削除
): string|int|float|false
ただし、実際の使用では、特にPHP 8.0以下では、一般的な呼び出し方法がより簡単です。
グリニッジ時間(GMT)は経度0に対応しており、例として51.4769 (つまり、英国のグリニッジ天文台の近く)の緯度を選択できます。重要なポイントは、 gmt_offsetを0に設定して、返された時間がGMT時間になるようにすることです。
<?php
// 現在のタイムスタンプを今日に設定します 12:00 PM
$timestamp = strtotime('today noon');
// グリニッジの場所
$latitude = 51.4769;
$longitude = 0.0005;
// 使用 date_sunset 得る GMT 下の夕日(文字列形式の戻り時間)
$sunset = date_sunset(
$timestamp,
SUNFUNCS_RET_STRING,
$latitude,
$longitude,
90, // zenith デフォルト値,一般的な使用 90
0 // GMT オフセットはです 0
);
echo "グリニッジの時間下の夕日为: $sunset";
?>
出力の例(現在の日付に応じて):
グリニッジの時間下の夕日为: 19:58
PHP 8.1+の変更:PHP 8.1以降、 GMT_OFFSETパラメーターが削除されているため、GMTオフセットを直接指定できません。 PHP 8.1以降を使用している場合は、デフォルトのタイムゾーンをUTCに設定することをお勧めします。
推奨されるプラクティス(PHP 8.1+) :
<?php
date_default_timezone_set('UTC');
$timestamp = strtotime('today noon');
$latitude = 51.4769;
$longitude = 0.0005;
$sunset = date_sunset(
$timestamp,
SUNFUNCS_RET_STRING,
$latitude,
$longitude,
90
);
echo "グリニッジの時間(UTC)下の夕日为: $sunset";
?>
結果形式: sunfuncs_ret_timestampを使用してUnixタイムスタンプを取得するか、 sunfuncs_ret_doubleを使用してフローティングポイント形式(時間、19.58など)を取得できます。
date_sunset()関数を使用すると、指定された日付の下で地理的な場所の日没時間を簡単に取得できます。グリニッジ時間(GMT)を取得したい場合、重要なのは、グリニッジ天文台の近くの座標に緯度と経度を設定し、タイムゾーンオフセットを0に設定する(またはデフォルトのタイムゾーンをUTCに設定することです) 。