Fecha de PHP ayer [duplicate]

3 minutos de lectura

Posible duplicado:

Obtenga la marca de tiempo de hoy y ayer en php

Me preguntaba si había una forma sencilla de obtener la fecha de ayer a través de este formato:

date("F j, Y");

avatar de usuario
reycrunch

date() en sí mismo es solo para formatear, pero acepta un segundo parámetro.

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

Para mantenerlo simple, solo resto 24 horas de la marca de tiempo de Unix.

Un enfoque OOP moderno está utilizando DateTime

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

O en tu caso (más legible/obvio)

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

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

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

  • muy buena respuesta, hay muchas formas de hacerlo pero tienes la simple, corta y fácil de entender (+ la OOP para los interesados ​​en usar más RAM 😉

    – neofuturo

    12 de abril de 2012 a las 8:04

  • @neofutur Además de “queremos desperdiciar nuestra RAM”, el enfoque OOP es útil, cuando ya tiene un DateTime-, o un DateInterval-objeto (o ambos), que puede ser el caso en una aplicación basada en programación orientada a objetos (por ejemplo, $customer->expire->add(DateInterval::createFromDateString('+1 year')) // customer paid for one additional year) También tenga en cuenta que DateInterval entiende ISO8601 para intervalos de tiempo, pero date() no. Al final del curso: Selecciona el que mejor se adapte a tus necesidades 🙂

    – KingCrunch

    12 de abril de 2012 a las 8:19


  • ¡Esta NO es una respuesta correcta! El horario de verano hace jornadas de 23 y 25 horas. ¡Así que esto NO te está dando una buena respuesta 2 horas al año!

    – patricio

    24/04/2013 a las 15:25

  • @patrick Punto interesante 🙂 Sí, tienes razón, pero esto solo es cierto para la primera solución, no para la siguiente utilizando DateInterval.

    – KingCrunch

    25 de abril de 2013 a las 14:26

  • No olvides usarlo como \DateTime y \DateInterval en el contexto de un espacio de nombres.

    – Thomas Kekeisen

    21 de abril de 2017 a las 9:30

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

  • +1 porque esto hace que la intención sea un poco más obvia al escanear el código. Código autodocumentado y todo eso.

    – Justin ᚅᚔᚈᚄᚒᚔ

    22 de julio de 2011 a las 22:48

avatar de usuario
Vijay Verma

Cuan sencillo 🙂

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

Ejemplo:

echo date("Y-m-j H:i:s", strtotime( '-1 days' ) ); // 2018-07-18 07:02:43

Producción:

2018-07-17 07:02:43

  • 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' ) dónde $s es cuántos días hacia atrás (o hacia adelante si juegas con signos) quieres ir.

    – Enrique

    25 de marzo de 2013 a las 3:04


  • lo necesitaba hace cinco días, así que este es el más fácil de modificar.

    – omikes

    27 de marzo de 2018 a las 15:43

  • Usar Y-m-d en vez de Y-m-j para la fecha estándar ISO, j no tiene un cero inicial.

    – toster-cx

    14 de febrero de 2019 a las 16:30

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad