2011-07-22 28 views

Respuesta

180

date() propio es solo para formatear, pero acepta un segundo parámetro.

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

Para simplificar, restar solo 24 horas de la marca de tiempo de unix.

Un oop-enfoque moderno está utilizando DateTime

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

o en su caso (más legible/obvia)

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

(Debido DateInterval es negativo aquí, debemos add() aquí)

Ver también: DateTime::sub() y DateInterval

+0

Gracias por la rápida respuesta. –

+3

muy buena respuesta, hay muchas maneras de hacerlo, pero tienes la simple, corta y fácil de entender (+ el OOP para aquellos interesados ​​en usar más RAM;) – neofutur

+3

@neofutur Además de "queremos perder nuestra memoria RAM" el enfoque OOP es útil, cuando ya tiene un objeto 'DateTime'- o' DateInterval' (o ambos), que puede ser el caso en una aplicación basada en OOP (por ejemplo '$ customer-> expire- > add (DateInterval :: createFromDateString ('+ 1 año')) // cliente pagado por un año adicional') También tenga en cuenta que 'DateInterval' entiende ISO8601 por intervalos de tiempo, pero' date() 'no. Al final del curso: Seleccione el que mejor se ajuste a sus necesidades :) – KingCrunch

116

strtotime(), como en date("F j, Y", strtotime("yesterday"));

+13

+1 porque esto hace que la intención sea un poco más obvia cuando se escanea el código. Código de auto-documentación y todo eso. –

81

¿Qué tan fácil :)

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

Prefiero esta respuesta. El desplazamiento ('-1') no tiene que ser una constante: se puede construir con una variable, incluso con un bucle: 'strtotime ('-'. $ S. 'Days')' donde '$ s' es cuántos días atrás (o hacia adelante si juegas con signos) quieres ir. – Henry

Cuestiones relacionadas