2013-04-03 8 views
9

używam strtotime dostać sekund przeszłości 1 January 1970, ale ja nie rozumiejąc, że dlaczego otrzymuję -3600 jeśli zegar jest ustawiony na 12.00AM i mam 0 gdy zegar jest ustawiony na 1 AM, więc o co chodzi z tym 1 HOUR? Czy to problem ze strefą czasową?Dlaczego strtotime (1 stycznia 1970) zwraca -3600 zamiast 0 w PHP?

echo 'I Expect 0 Here '.strtotime('1st January 1970').'<br />'; 
//This gives me -3600 

echo 'I Expect 3600 Here '.strtotime('1st January 1970 01.00AM'); 
//This gives me 0 

PS I już nie ustawić dowolną strefę czasową, w moim pliku PHP lub nie mam nawet zmodyfikowane mój plik ini (świeże zainstalowana XAMPP)

Aktualizacja: strefy czasowej : Europa/Berlin

+0

off topic, ale rofl @ twoje zakodowane base64 maila – asprin

+1

@asprin komentarzu Off-Topic Chyba: P;) hehe dziękuję jakikolwiek , Biorę to jako komplement. –

+1

Tak, to był rodzaj komplementu, miło po wyjęciu z pudełka myślenia i humoru. – asprin

Odpowiedz

8

Jest to najprawdopodobniej spowodowane lokalnym time zone.
Co znajduje się wyjście

var_dump(date_default_timezone_get()); 

na tej maszynie?
Można również sprawdzić różnicę między mktime i gmmktime

echo " mktime: ", mktime(), "\n"; 
echo " gmmktime: ", gmmktime(), "\n"; 
+0

Byłem pewien, że strefa czasowa zepsuła rzeczy .... Dzięki –

+0

+1 dla mktime() i gmmktime() ... :) –

6

Strefę czasową należy ustawić na UTC + 1. O północy w strefie czasowej zdarzyła się godzina przed północą w UTC, co wyjaśnia przesunięcie o -3600 sekund.

Można ustawić strefę czasową na UTC, aby uzyskać oczekiwany rezultat:

date_default_timezone_set('UTC'); 
+0

Dziękuję, używam tego teraz do resetowania strefy czasowej do UTC –

4

Trzeba sprawdzić ustawienia strefy czasowej. lub jeśli ustawisz default_time_zone na UTC, otrzymasz pożądany wynik.

date_default_timezone_set('UTC'); 
1

dodać to, aby ustawić strefę czasową 'Europa/Berlin'

date_default_timezone_set('Europe/Berlin'); 
Powiązane problemy