現在の位置: ホーム> 最新記事一覧> date_sunset()関数がfalseを返すのはなぜですか?原因は何ですか?

date_sunset()関数がfalseを返すのはなぜですか?原因は何ですか?

M66 2025-06-23

PHPでは、 date_sunset()関数を使用して、指定された時間と位置の日没時間を計算し、タイムスタンプまたはフォーマットされた文字列を返します。ただし、場合によっては、関数はfalseを返します。これは通常、エラーが発生したか、計算が失敗したことを示します。この記事では、date_sunset()虚偽を返すいくつかの一般的な理由と、これらの問題を回避する方法に飛び込みます。

1.パラメーターは誤って渡されます

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);

2。無効な緯度または経度

着信緯度が-90〜90の間でない場合、または経度が-180〜180の間でない場合、関数は正しく処理されず、直接FALSEを返します。

例:

 // 誤った緯度と経度
$sunset = date_sunset(time(), SUNFUNCS_RET_STRING, 1234, 5678); // 間違い

パラメーターが真の地理的座標範囲を満たしていることを確認してください。

3.タイムスタンプはサポート範囲を超えています

date_sunset()で使用される内部計算は、タイムスタンプによって異なります。タイムスタンプがPHP(特に32ビットシステムで)でサポートされている整数の範囲を超えると、 Falseが返される場合があります。

例:

 // 超える 32 ビットシステムのタイムスタンプの範囲
$sunset = date_sunset(99999999999, SUNFUNCS_RET_STRING, 40.7128, -74.0060);

合法的なタイムスタンプを生成して、 time()または妥当なstrtotime()を使用することをお勧めします。

4.構成アイテムは正しく設定されていません( php.ini

PHPを使用すると、 PHP.iniファイルを介してデフォルトの緯度、経度、頂点を設定できます。これらの値が設定されていないか、誤って構成されていない場合、 date_sunset()も間接的に適切に機能しない可能性があります。

検査方法:

 echo ini_get('date.default_latitude');
echo ini_get('date.default_longitude');

出力が空または数字でない場合、これらのパラメーターはコードで手動で渡す必要があります。

5。位置は目に見えない太陽現象を引き起こします(極夜)

極地では、一年の特定の時期に太陽が昇ったり、沈むことはありません(北極の極地や昼など)。この場合、 Date_sunset()は、その日に「日没」現象がないため、 Falseを返すこともあります。

例:

 // 北極の場所,一日に夕日はありません
$sunset = date_sunset(strtotime("2025-01-01"), SUNFUNCS_RET_STRING, 89.9, 135.0);

6。タイムゾーンまたはGMTオフセット設定エラー

最後のパラメーター$ gmtoffsetは、 gmt(utc)のオフセットを数時間で制御します。値が不合理に設定されている場合、満たされていない結果につながる可能性があります。

たとえば、北京時間は+8.0でなければなりません。 -8.0に設定すると、誤った結果またはfalseが得られる可能性があります。

結論

date_sunset()は非常に実用的な時間関数ですが、複数のパラメーターに依存し、エラーがfalseを返す場合があります。正しい使用法を含める必要があります。

  • タイムスタンプ緯度経度などの重要なパラメーターを明確に渡す

  • php.iniの関連する構成に問題があるかどうかを確認します

  • 極端な地理的または時間条件下で通話を避けてください