2012-03-31 16 views
7

Próbuję utworzyć listę wyboru, począwszy od bieżącej daty użytkownika. Chcę, aby był ustawiony na północ w formacie uniksowego timestamp.Dlaczego mój strtotime ("dzisiaj") nie działa?

To wszystko robię:

$today = strtotime('today'); 
echo $today; 

To jest mój wynik:

1333144800 

który jest: piątek, 30 marca 2012 22:00:00 GMT według Epoch Converter

+3

Wygląda na to, że strefa czasowa serwera jest ustawiona na GMT + 2, więc faktycznie uzyskujesz poprawny wynik. – Niko

+2

Poważnie, reakcja * noone * na takie rzeczy powinna być "' strtotime' nie działa ". Co dalej, błąd w 'strlen'? – Jon

Odpowiedz

15

Jeśli chcesz, aby strtotime() zwracał znacznik czasu względem UTC (00:00:00 UTC zamiast np. 00:00:00 UTC + 2, jeśli twój system jest ustawiony na strefę czasową z przesunięciem o 2 godziny przeciwko UTC/GMT), należy określić, że:

$today = strtotime('today UTC'); 
+0

woww, jego działanie, –

+0

dziękuję bardzo –

0

Powinieneś sprawdzić konfigurację strefy czasowej w pliku php.ini. W moim przypadku (ja mieszkam w Salwadorze) musiałem zmienić to tak:

date.timezone = America/El_Salvador 
0

mogłeś specjalnie ustawić czas, jak również dzień:

$today_midnight = strtotime('today UTC 00:00'); 
5

GMT (+0) Czas

echo $today = strtotime('today GMT'); 
echo "<br>" . $today = date("d-m-Y H:i:s", $today); 

Oczekujemy, że serwer działa na GMT - który jest najlepszy (do manewrowania z wyświetlaczami czas później). Jeśli nie, MUSISZ dostosować php.ini ustawić "date.timezone = GMT".

Gdy to zrobisz, zobaczysz 00:00 z moimi kodami.

Następnie należy rozwinąć funkcję (tj DisplayDate()) w skrypcie do prawidłowego wyświetlania daty swojej stronie jeśli

  • jesteś nie w strefie GMT
  • lub/i jeśli chcesz dla swoich użytkowników aby zobaczyć czasy w ich strefie czasowej z wyborem strefy czasowej na przykład.

DisplayDate() powinien zawierać także obsługę zmian w świetle dziennym (0 lub +1 godzina/lato i czas zimowy).

Powiązane problemy