2010-10-12 11 views

Odpowiedz

22

date zwraca ciąg, podczas gdy chcesz dodać 86400 sekund do znacznika czasu. Myślę, że szukasz to:

$tomorrow = date("Y-m-d", time() + 86400); 
+8

Co z DST? –

+8

Rzeczywiście, to się nie uda z powodu zmiany czasu na letni. Nigdy nie powinieneś pisać tak arytmetycznie. –

+0

Uzgodniono, że to nie uwzględnia DST. Właśnie odpowiedziałem na podstawie tego, co OP próbował zrobić, czy to naprawdę to, czego chce, zależy od niego do podjęcia decyzji. – casablanca

14

date() zwraca ciąg, więc dodanie do niego liczby całkowitej nie jest dobre.

Pierwszy zbudować jutro znacznik czasu, używając strtotime być nie tylko czyste, ale bardziej dokładne (patrz komentarz Pekka za):

$tomorrow_timestamp = strtotime("+ 1 day"); 

Następnie użyj go jako drugi argument dla date rozmowy:

$tomorrow_date = date("Y-m-d", $tomorrow_timestamp); 

Lub, jeśli jesteś w super-kompaktowym nastroju, że wszystko może być wepchnięty

$tomorrow = date("Y-m-d", strtotime("+ 1 day")); 
+3

+1 ale ładniejszym sposobem na zbudowanie znacznika czasu byłoby 'strtotime (" + 1 day ");' z powodu DST –

+0

@Pekka: schludny! Edytowane :) – Matchu

6

Nicea i oczywiste:

$tomorrow = strtotime('tomorrow'); 
+1

Schludny, ale w swojej obecnej formie nie pasuje do wymagań PO:/Dodaj do tego połączenia 'date' i jesteśmy gotowi do pracy. – Matchu

27

ja zachęcam do odkrywania PHP 5.3 DateTime klasę. To sprawia, daty i czasy znacznie łatwiej pracować:

$tomorrow = new DateTime('tomorrow'); 

// e.g. echo 2010-10-13 
echo $tomorrow->format('d-m-Y'); 

Ponadto, można użyć składni + 1 day z każdym dniem:

$xmasDay = new DateTime('2010-12-24 + 1 day'); 
echo $xmasDay->format('Y-m-d'); // 2010-12-25 
+1

+1 dla 'DateTime', to przyszłość. –

+0

@Pekka Zgoda - bardzo dobre api –

0

Można użyć add metody datetime klasę. Np. Chcesz dodać jeden dzień do bieżącej daty i godziny.

$today = new DateTime(); 
$today->add(new DateInterval('P1D')); 

Dalsze odniesienia php datetime add

Nadzieja to pomaga.