PHP Velho Oeste 2024

date_sunset

(PHP 5, PHP 7, PHP 8)

date_sunset Verilen gün ve konum için günbatımı zamanını döndürür

Uyarı

PHP 8.1.0 ve sonrasında bu işlevin kullanımı ÖNERİLMEMEKTEDİR. Bu işleve asla güvenilmemelidir. Yerine date_sun_info() işlevi kullanılmalıdır.

Açıklama

date_sunset(
    int $dönüş_biçimi = SUNFUNCS_RET_STRING,
    ?float $enlem = null,
    ?float $boylam = null,
    ?float $başucu = null,
    ?float $utc_farkı = null
): string|int|float|false

date_sunset() işlevi, verilen gün (zamandamgası) ve konum için günbatımı zamanını döndürür.

Bağımsız Değişkenler

zaman damgası

Günbatımı zamanı alınacak günün zamandamgası.

dönüş_biçimi

dönüş_biçimi sabitleri
sabit açıklama örnek
SUNFUNCS_RET_STRING Sonucu dizge olarak döndürür. 16:46
SUNFUNCS_RET_DOUBLE Sonucu gerçek sayı olarak döndürür. 16.78243132
SUNFUNCS_RET_TIMESTAMP Sonucu tamsayı (zaman damgası) olarak döndürür. 1095034606

enlem

Kuzey yarımküre öntanımlıdır. Güney yarımküre için negatif değer girilir. Ayrıca bakınız: date.default_latitude

boylam

Doğu yarımküre öntanımlıdır. Batı yarımküre için negatif değer girilir. Ayrıca bakınız: date.default_longitude

başucu

başucu, güneşin merkezi ile dünya yüzeyine dik bir çizgi arasındaki açıdır. Öntanımlı değer: date.sunrise_zenith

Bazı başucu açıları
Açı Açıklama
90°50' Gündoğumu: Güneşin görünür hale geldiği nokta.
96° Sivil alacakaranlık: Geleneksel olarak şafağın başlangıcını belirtmek için kullanılır.
102° Deniz alacakaranlığı: Ufkun denizde görünmeye başladığı nokta.
108° Astronomik alacakaranlık: Güneşin herhangi bir aydınlatmanın kaynağı olmaya başladığı nokta.

utc_farkı

Saat cinsinden belirtilir. dönüş_biçimi değeri SUNFUNCS_RET_TIMESTAMP ise utc_farkı yoksayılır.

Dönen Değerler

Başarılı olduğunda, dönüş_biçimi bağımsız değişkeniyle belirlenen biçimde şafak zamanı, başarısızlık durumunda false döner. Başarısızlığın olası nedeni, yılın bir bölümünde kutup dairesinin içinde güneşin hiç doğmamasıdır.

Hatalar/İstisnalar

Bir tarih/zaman işlevine yapılan her çağrı eğer zaman dilimi ayarı geçerli değilse bir E_WARNING üretir. Ayrıca bakınız: date_default_timezone_set()

Sürüm Bilgisi

Sürüm: Açıklama
8.1.0 Bu işlevin kullanımı önerilmemekte olup yerine date_sun_info() işlevi önerilmektedir.
8.0.0 enlem, boylam, başucu ve utc_farkı artık null olabiliyor.

Örnekler

Örnek 1 - date_sunset() örneği

<?php

/* İstanbul, Türkiye için günbatımı zamanı hesabı
Enlem: 41.01 Kuzey
Boylam: 28.58 Doğu
Başucu ~= 90
saat farkı: +2 GMT
*/

echo date("D M d Y"). ', günbatımı: ' .date_sunset(time(), SUNFUNCS_RET_STRING, 41.01, 28.58, 90, 2);

?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Thu Dec 11 2008, günbatımı: 16:33

Örnek 2 - Güneşin doğmaması

<?php
$solstice
= strtotime('2017-12-21');
var_dump(date_sunset($solstice, SUNFUNCS_RET_STRING, 69.245833, -53.537222));
?>

Yukarıdaki örneğin çıktısı:

bool(false)

Ayrıca Bakınız

  • date_sun_info() - Güneşin doğuşu/batışı ve alacakaranlık başlangıcı/sonu hakkında bilgi içeren bir dizi döndürür

add a note add a note

User Contributed Notes 3 notes

up
1
matt at mctsoft dot net
4 years ago
yes SUNFUNCS_RET_TIMESTAMP does return GMT(0) time

so something like...

$arr = localtime(date_sunset(time(),SUNFUNCS_RET_TIMESTAMP,51.5,0)); // London

$hh = $arr[2];
$mm = $arr[1];

Will give figure out your localtime and daylight saving (BST)
up
-1
nospam at nomail dot com
6 years ago
maybe I am wrong, but I think

SUNFUNCS_RET_TIMESTAMP     return GMT(0) time

SUNFUNCS_RET_STRING     Return local time
SUNFUNCS_RET_DOUBLE     Return local time
up
-25
michael at dayah dot com
17 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