2013-02-26 11 views
8

Jak mówi tytuł, może ktoś wyjaśnić, dlaczego kodphp - date_default_timezone_set nie działa, ale ini_set "date.timezone" ma. Czemu?

ini_set('date.timezone', 'Europe/Athens'); 

prace ale

date_default_timezone_set('Europe/Athens'); 

nie?

Szukałem rozwiązania, aby przekonwertować sygnaturę czasową i wszystko, co mogłem znaleźć w Internecie, to użyć date_default_timezone_set. Ale konwersja zawsze miała 1 godzinę różnicy.

Następnie znalazłem ten temat "strftime() function showing incorrect time", który używa kodu init_set (a potem mam RTM i dowiedziałem się, że jest już wspomniany w dokumentacji). Wypróbowałem to i zadziałało. Nie mam odpowiedzi, dlaczego date_default_timezone_set nie działa.

Czy ktoś może mi wyjaśnić?

+0

to timastampy, a nie UTC, a Ateny to +1? może spróbuj Europe/Dublin – KevInSol

+0

Proszę udostępnić pełny kod. – Evert

+0

Kod roboczy http://pastebin.com/EQx9jeGm –

Odpowiedz

2

Musisz używać starej wersji PHP.

date_default_timezone_set is for PHP 5.1.2 and above. 

Wypróbuj php -v i sprawdź wersję PHP.

0

Można użyć:

putenv("TZ=Europe/Berlin"); // PHP 4 
+0

Możesz sformatować swój kod za pomocą przycisku ** '{}' ** w edytorze. – kdbanman

0

localhost

server

Jest dość późno, mam ten sam problem i widzę, że jest różnica, zamieścić zrzut ekranu z mojego localhost i moje osobiste phpinfo serwera dla strefy czasowej.

Na moim localhost, date_default_timezone_set ("[strefa czasowa]" działa poprawnie, jednak na serwerze zawsze zwraca UTC. Na podstawie dokumentu php wygląda na to, że strefa czasowa nie jest ustawiona w php ini na moim serwerze, więc prawdopodobnie zignorowałam ustawienie strefy czasowej, ponieważ żadna wartość nie jest zdefiniowana poprzednio.

Użycie zestawu init_set powoduje, że strefa czasowa będzie dostępna. Myślę, że strefa czasowa nie jest predefiniowana na php ini jest przyczyną.

Powiązane problemy