date_sunset

(PHP 5, PHP 7)

date_sunset 指定した日付と場所についての日の入り時刻を返す

説明

mixed 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 = 0 ]]]]] )

date_sunset() は、与えられた日付 (timestamp で指定する) と場所についての日の入り時刻を返します。

パラメータ

timestamp

日の入り時刻を取得する日の timestamp

format

format 定数
定数 説明
SUNFUNCS_RET_STRING 結果を string で返します。 16:46
SUNFUNCS_RET_DOUBLE 結果を float で返します。 16.78243132
SUNFUNCS_RET_TIMESTAMP 結果を integer (タイムスタンプ) で返します。 1095034606

latitude

デフォルトは北緯で、南緯は負の値で表します。 date.default_latitude も参照ください。

longitude

デフォルトは東経で、西経は負の値で表します。 date.default_longitude も参照ください。

zenith

デフォルトは date.sunset_zenith です。

gmtoffset

時間単位で指定します。

エラー / 例外

すべての日付/時刻関数は、 有効なタイムゾーンが設定されていない場合に E_NOTICE を発生させます。また、システム設定のタイムゾーンあるいは環境変数 TZ を使用した場合には E_STRICT あるいは E_WARNING を発生させます。 date_default_timezone_set() も参照ください。

変更履歴

バージョン 説明
5.1.0

タイムゾーンがおかしい場合に E_STRICTE_NOTICE が発生するようになりました。

返り値

日の入り時刻を、指定した format で返します。 失敗した場合に FALSE を返します。

例1 date_sunset() の例

<?php

/* ポルトガル リスボンの日の入り時刻を計算する
緯度: 北緯 38.4
経度: 西経 9
天頂 ~= 90
時差: +1 GMT
*/

echo date("D M d Y"). ', sunset time : ' .date_sunset(time(), SUNFUNCS_RET_STRING38.4, -9901);

?>

上の例の出力は、 たとえば以下のようになります。

Mon Dec 20 2004, sunset time : 18:13

参考

  • date_sunrise() - 指定した日付と場所についての日の出時刻を返す

add a note add a note

User Contributed Notes 1 note

up
-19
michael at dayah dot com
10 years ago
I use an IP to location database to determine the visitor's approximate latitude and longitude and then serve them a day or night color scheme based on whether it is before civil dawn or dusk. I've had problems when not specifying the timezone, specifically a 1 hour error, so I use GMT.

<?php
date_default_timezone_set
("GMT");

function
scheme() {
       
$sunrise = date_sunrise(time(), SUNFUNCS_RET_DOUBLE, $latitude, $longitude, 96, 0);
       
$sunset = date_sunset(time(), SUNFUNCS_RET_DOUBLE, $latitude, $longitude, 96, 0);
       
$now = date("H") + date("i") / 60 + date("s") / 3600;

        if (
$sunrise < $sunset)
                if ((
$now > $sunrise) && ($now < $sunset)) return "day";
                else return
"night";
        else
                if ((
$now > $sunrise) || ($now < $sunset)) return "day";
                else return
"night";
}
?>
To Top