PHP: date_sunset fonksiyonu ile Odd davranış

2 Cevap php

Ben PHP date_sunset fonksiyonuna bir göz yaşıyorum ve ben biraz garip bulmak bir sorunu bir araya geldi. Ben bu kod parçası var:

$sunset = date_sunset(mktime(0, 0, 0, 5, 14, 2010),
    $format,                // Format
    55.596041,              // Latitude
    12.992495,              // Longitude
    90,                     // Zenith
    2                       // GMT Offset
);

Üç farklı formatları için, bana verecekti:

SUNFUNCS_RET_STRING    21:05
SUNFUNCS_RET_DOUBLE    21.095732016315
SUNFUNCS_RET_TIMESTAMP 1273863944 // H:i:s O -> 19:05:44 +0000

Neden gmt görmezden damgası biçimi ofset? Böyle olması gerekiyordu mı? Eğer öyleyse bunun arkasındaki nedeni nedir?

2 Cevap

(saat dilimi UTC +0 ayarlanır yani) date_sunset (SUNFUNCS_RET_TIMESTAMP,,,,) ofset görmezden değilse, zaman damgası değerine biçimlendirmek için kullanmış işlevi, örneğin

$sunset = date_sunset(mktime(0, 0, 0, 5, 14, 2010),
    SUNFUNCS_RET_TIMESTAMP,                // Format
    55.596041,              // Latitude
    12.992495,              // Longitude
    90,                     // Zenith
    2                       // GMT Offset
);

date_default_timezone_set('UTC');
echo date('H:i:s O', $sunset), "\n";

date_default_timezone_set('Europe/Berlin');
echo date('H:i:s O', $sunset), "\n";

date_default_timezone_set('America/New_York');
echo date('H:i:s O', $sunset), "\n";

baskılar

19:06:07 +0000
21:06:07 +0200
15:06:07 -0400

Zaman damgaları herhangi timezone veri içermez. Bunlar 1 Ocak 1970 olan Epoch, 00:00:00 beri saniye vardır