2011-07-18 12 views
8

Nie mogę zrozumieć, dlaczego gmdate() i date() przywracają te same wartości, jeśli mój serwer nie jest skonfigurowany na czas Greenwich Mean.zrozumienie wartości zwracanej w czasie gmaila

Dlaczego tak jest?

echo time();     // 1311011114 
echo date("U");    // 1311011114 
echo gmdate("U");   // 1311011114 


echo date("j-m-y H:m:s"); // 18-07-11 12:07:14 
echo date("e");    // America/Chicago 
echo date("O");    // -0500 
echo date("T");    // CDT 

UPDATE
jak mogę uzyskać aktualny czas na Greenwich? obliczanie z datą ("O")? czy jest inny sposób?

+0

patrz link I dodawanych do mojego postu na swojej aktualizacji – Neal

+0

się anwser która ma sens dla mnie: 'time() jest zawsze taka sama wszędzie ** **' –

Odpowiedz

5

Ponieważ czas nigdy się nie zmienia - zawsze jest sekunda od epoki (GMT).

Czas jest zawsze taki sam. To tylko Twoja strefa czasowa jest inna i tak różni się data wyświetlania.

Możesz zmienić swoją strefę czasową, aby zobaczyć czas w różnych strefach.

Zobacz here dla wszystkich data/czas funkcji

2

tak dawno temu, ludzie potrzebowali sposobu określenia czasu, w wielu systemach komputerowych, który był umundurowany. Rada Konsumentów ds. Obliczeń Mędrców (w skrócie CSCWE) w wieku przed internetem podjęła decyzję. Tajne głosowanie zdecydowało, że arbitralnym punktem początkowym będzie rok 1970, aby zwiastować bardziej zaawansowany wiek komputerów. Od tego momentu rozpoczął się niekończący się marsz sekund przez dziesięciolecia, nowy czas na obliczanie rewolucji przy stałym biciu sekund.

Z tego arbitralnie zdefiniowanego początku, cały czas obliczania można określić, uruchamiając matematyczne czarnoksięstwo przeciwko tej coraz większej liczbie sekund, a następnie obliczając czas w strefach czasowych.

+0

wiem wszystko. Zaktualizowałem pytanie. Nie wiem, dlaczego istnieje gmdate(). wydaje się być aliasem daty() –

+0

@LuisSiquot: http://php.net/manual/en/function.gmdate.php zawsze będzie zwracana w gmtime, podczas gdy 'date()' będzie zwracana tylko z bieżącą strefą czasową setti ngs – Neal

+0

_date() powróci tylko z bieżącymi ustawieniami strefy czasowej_, z wyjątkiem modyfikatora "U"? –

0

To już zostało odebrane, ale jeśli chcesz uzyskać czas lokalny i czas UTC;

date_default_timezone_set('America/Chicago'); 

$format = 'Y-m-d H:i:s'; 
$time1 = time(); 
$time2 = strtotime(gmdate($format)); 

print date($format, $time1); 
print date($format, $time2); 

// 2014-07-24 17:31:23 
// 2014-07-24 22:31:23 
Powiązane problemy