PHPでは、 date_sunset()関数を使用して、指定された時間と位置の日没時間を計算し、タイムスタンプまたはフォーマットされた文字列を返します。ただし、場合によっては、関数はfalseを返します。これは通常、エラーが発生したか、計算が失敗したことを示します。この記事では、date_sunset()に虚偽を返すいくつかの一般的な理由と、これらの問題を回避する方法に飛び込みます。
date_sunset()の標準使用法は次のとおりです。
date_sunset(
int $timestamp,
int $returnFormat = 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 $gmtOffset = 0
): string|int|false
特定のパラメーターが正しく渡されない場合、特に緯度( $緯度)と経度( $経度)が正しく渡されない場合、関数はfalseを返す可能性があります。
// エラーの例:緯度と経度は設定されていません
$sunset = date_sunset(time());
if ($sunset === false) {
echo "日没時間を計算できません";
}
解決策:有効な緯度と経度の値が渡されることを確認してください。
$sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 31.7667, 35.2333, 90, 2);
着信緯度が-90〜90の間でない場合、または経度が-180〜180の間でない場合、関数は正しく処理されず、直接FALSEを返します。
// 誤った緯度と経度
$sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 1234, 5678); // 間違い
パラメーターが真の地理的座標範囲を満たしていることを確認してください。
date_sunset()で使用される内部計算は、タイムスタンプによって異なります。タイムスタンプがPHP(特に32ビットシステムで)でサポートされている整数の範囲を超えると、 Falseが返される場合があります。
// 超える 32 ビットシステムのタイムスタンプの範囲
$sunset = date_sunset(99999999999, SUNFUNCS_RET_STRING, 40.7128, -74.0060);
合法的なタイムスタンプを生成して、 time()または妥当なstrtotime()を使用することをお勧めします。
PHPを使用すると、 PHP.iniファイルを介してデフォルトの緯度、経度、頂点を設定できます。これらの値が設定されていないか、誤って構成されていない場合、 date_sunset()も間接的に適切に機能しない可能性があります。
echo ini_get('date.default_latitude');
echo ini_get('date.default_longitude');
出力が空または数字でない場合、これらのパラメーターはコードで手動で渡す必要があります。
極地では、一年の特定の時期に太陽が昇ったり、沈むことはありません(北極の極地や昼など)。この場合、 Date_sunset()は、その日に「日没」現象がないため、 Falseを返すこともあります。
// 北極の場所,一日に夕日はありません
$sunset = date_sunset(strtotime("2025-01-01"), SUNFUNCS_RET_STRING, 89.9, 135.0);
最後のパラメーター$ gmtoffsetは、 gmt(utc)のオフセットを数時間で制御します。値が不合理に設定されている場合、満たされていない結果につながる可能性があります。
たとえば、北京時間は+8.0でなければなりません。 -8.0に設定すると、誤った結果またはfalseが得られる可能性があります。
date_sunset()は非常に実用的な時間関数ですが、複数のパラメーターに依存し、エラーがfalseを返す場合があります。正しい使用法を含める必要があります。
タイムスタンプ、緯度、経度などの重要なパラメーターを明確に渡す
php.iniの関連する構成に問題があるかどうかを確認します
極端な地理的または時間条件下で通話を避けてください