2011-07-22 11 views

Odpowiedz

180

sama date() służy tylko do formatowania, ale akceptuje drugi parametr.

date("F j, Y", time() - 60 * 60 * 24); 

Aby zachować prostotę, odejmuję 24 godziny od uniksowego znacznika czasu.

Nowoczesny oop-podejście wykorzystuje DateTime

$date = new DateTime(); 
$date->sub(new DateInterval('P1D')); 
echo $date->format('F j, Y') . "\n"; 

lub w przypadku (bardziej czytelny/oczywiste)

$date = new DateTime(); 
$date->add(DateInterval::createFromDateString('yesterday')); 
echo $date->format('F j, Y') . "\n"; 

(Bo DateInterval jest ujemna tutaj, musimy add() to tutaj)

Zobacz także: DateTime::sub() i DateInterval

+0

Dzięki za szybką odpowiedź. –

+3

bardzo dobra odpowiedź, jest wiele sposobów na zrobienie tego, ale masz prosty, krótki i łatwy do zrozumienia (+ OOP dla zainteresowanych użyciem większej pamięci RAM). – neofutur

+3

@neofutur Obok "chcemy zmarnować naszą pamięć RAM" metoda OOP jest przydatna, gdy już masz obiekt 'DateTime'- lub' DateInterval' (lub oba), co może mieć miejsce w aplikacji opartej na OOP (np. '$ customer-> expire- > add (DateInterval :: createFromDateString ("+ 1 rok")) // klient opłacony przez jeden dodatkowy rok') Należy również zauważyć, że 'DateInterval' rozumie ISO8601 dla przedziałów czasowych, ale' date() 'nie. Pod koniec kursu: wybierz ten, który najlepiej pasuje do twoich potrzeb :) – KingCrunch

116

strtotime(), jak w date("F j, Y", strtotime("yesterday"));

+13

+1, ponieważ powoduje to, że intencja staje się bardziej oczywista podczas skanowania za pomocą kodu. Kod samokodujący się i wszystko to. –

81

Jak łatwo :)

date("F j, Y", strtotime('-1 days')); 
+4

Preferuję tę odpowiedź. Przesunięcie ("-1") nie musi być stałą: można ją zbudować za pomocą zmiennej, nawet z pętlą: 'strtotime ('-'. $ S. 'Days')' gdzie '$ s' to ile dni wstecz (lub do przodu, jeśli bawisz się znakami) chcesz iść. – Henry