2013-05-23 6 views
8

Mam mój serwer zsynchronizowany z UTC, który jest obecnie 2013-05-23 18:13:56 dawać lub brać.Strefa czasowa/data PHP() niepoprawna lub PHP uważa, że ​​jest to T.A.R.D.I.S.

Po uruchomieniu date("Y-m-d H:i:s") otrzymuję 2013-05-24 07:13:56.

Sprawdziłem plik php.ini, strefa czasowa została ustawiona na date.timezone = 'UTC', co, jak sądziłem, zmieniłoby strefę czasową, aby odzwierciedlić ustawienia strefy czasowej systemu. Więc wyłączyłem go (tak: ;date.timezone = 'UTC') i nadal otrzymuję niepoprawny znacznik czasu.

Cała ta chybocząca, chwiejna, czasochłonna robota sprawiła, że ​​poczułem się bardziej zdezorientowany, niż Dalek z kartą walentynkową.

Sugestie?

+5

+1 za zabawny krawat doktora Who. – John

+4

Spróbuj ręcznie ustawić 'date.timezone' na strefę czasową systemu: np.' Date.timezone = Gallifrey' (lub gdziekolwiek jesteś). –

+0

@RocketHazmat - Serwer wirtualny, ustaw strefę czasową na synchronizację z innym serwerem, z którym związane są pytania. Próbowałem wyłączyć ustawienie date.timezone, mając nadzieję, że domyślnie będzie to czas systemowy, ale nadal nie działa. – Plummer

Odpowiedz

4

UTC to odniesienie, a nie strefa czasowa.

Każdy kraj/strefę odnoszą się do UTC.

Należy użyć strefy czasowej kraju, w której należy użyć czasu.

Na przykład:

date_default_timezone_set('Europe/London'); 
date("Y-m-d H:i:s"); 

Uwaga: Europa/Londyn jest UTC + 1 (? Dziwne UTC UE ma być Greenwich, które przechodzą przez Londynie, ale w Wielkiej Brytanii korzysta z oszczędności czasu, więc różnicy)

czas serwera powinien być poprawny albo ustawienie go na "UTC" nie oznacza ani dobrej rzeczy, jeśli ważniejsze jest, aby serwer był w "właściwym czasie" dla "właściwej strefy czasowej"

Jak sprawdzić, która strefa czasowa jest serwerem: z konsoli wpisz:

$ date 

a serwer odpowiada z czasem:

Thu May 23 13:22:23 CDT 2013 

Uwaga CDT, to strefa czasowa. Która strefa czasowa używa Twojego serwera?

+0

Czas serwera ustawiono zgodnie z UTC, ale strefa czasowa została ustawiona na "Międzynarodowa Dateline West", a synchronizacja czasu była wyłączona. (Mam za to podziękować moim poprzednikom.) Wielkie dzięki! – Plummer

+1

+1 dla rozróżnienia między strefą odniesienia a strefą czasową. – John

-1

Zgaduję używasz PHP < 5,4

date.timezone ciąg

Domyślna strefa czasowa używana przez wszystkich funkcji data/czas. Przed PHP 5.4.0 działałoby to tylko wtedy, gdyby zmienna środowiskowa TZ nie była ustawiona. Kolejność pierwszeństwa, dla której została użyta strefa czasowa, jeśli żadna z nich nie została wyraźnie wymieniona, jest opisana na stronie . Listę obsługiwanych stref czasowych zawiera lista obsługiwanych stref czasowych: .

1

Co znalazłem to to, że mój T.A.R.D.I.S. ustawi się na czas lokalny, więc niezależnie od tego, gdzie się znajdzie, jest to miejsce, w którym ustawi się mój SQL. Dlatego zawsze upewniam się, że mój Ubuntu używa prawidłowej strefy czasowej. To czas systemu, a nie tylko czas SQL. Wibrując mniej chybocząc się w ten sposób.

Powiązane problemy