¿Cómo obtener la fecha de ayer usando php?

5 minutos de lectura

avatar de usuario
programador_unico

Quiero obtener la fecha de ayer usando un formato de fecha específico en php, este es el formato:

$today = date("d.m.Y"); //15.04.2013

¿Es posible?

Tenga en cuenta el mes y el año si deben cambiarse respectivamente.

  • fecha(“dmy”, hora() – 60 * 60 * 24);

    – AllTooSir

    15 de abril de 2013 a las 6:44

  • probaste mi solución? esto funcionará con el cambio de meses también

    – fabio

    15 de abril de 2013 a las 6:47

  • el momento perfecto cuando el nombre de usuario “noob” encima de mí agrega un buen significado a su comentario 🙂

    – STT LCU

    15 de abril de 2013 a las 6:47


ahí vas

date('d.m.Y',strtotime("-1 days"));

esto funcionará también si cambia de mes

  • Un pequeño detalle: su función tiene problemas cerca de la medianoche si ese tiempo abarca el cambio de horario de verano. Pasar explícitamente el mediodía ayuda allí.

    – Deduplicador

    23 de noviembre de 2014 a las 16:08

  • Equivocado. 3 cosas sobre DST: 1 depende de la hora del servidor, si el servidor tiene la zona horaria correcta, no afectará mi función. 2 no todo el mundo se ve afectado por el horario de verano, hay lugares que no lo usan. 3 la mayoría de los lugares suelen cambiar la hora durante las primeras horas del día (como las 2 o las 3 am) para que no afecte el cambio de día.

    – fabio

    23 de noviembre de 2014 a las 22:16


  • 1. ¿Entonces esa función sabe y se fija en que un día puede ser distinto de 24h? 2. Incluso un reloj roto da la hora correcta dos veces al día. 3. La hora exacta que es robada/duplicada no es tan importante para el cálculo.

    – Deduplicador

    24 de noviembre de 2014 a las 0:33

  • sin sentido 1 un día no es más que 24 hasta que el horario de verano cambia la hora y el servidor cambia la hora según 2 por supuesto que lo es, pero ese no es el punto 3 esto es muy importante en cambio, su idea podría ser correcta si la hora cambia a medianoche, no en otras horas

    – fabio

    24 de noviembre de 2014 a las 1:13

avatar de usuario
Dhara Talaviya

Fecha de ayer en PHP:

echo date("Y-m-d", strtotime("yesterday")); 

prueba esto

        $tz    = new DateTimeZone('Your Time Zone');
        $date  = new DateTime($today,$tz);
        $interval = new DateInterval('P1D');
        $date->sub($interval); 

        echo $date->format('d.m.y');

        ?>           

  • mira esto php.net/manual/en/book.datetime.php‘ .. Esto también funcionará con el cambio de mes

    – siempre aprende

    15 de abril de 2013 a las 7:04


  • nueva fecha y hora (‘ayer’)

    – Virgilio García

    29 de agosto de 2015 a las 14:18

  • $ayer = new DateTime(‘ayer’, new DateTimeZone(‘Su zona horaria’));

    – miralong

    23 de mayo de 2017 a las 12:01

  • Sería bueno un poco de explicación con esta respuesta de solo código.

    – mickmackusa

    11 dic 2017 a las 20:51

Si defines el zona horaria en su aplicación PHP (como debería), lo cual puede hacer de esta manera:

date_default_timezone_set('Europe/Paris');

Entonces es tan simple como:

$yesterday = new DateTime('yesterday'); // will use our default timezone, Paris
echo $yesterday->format('Y-m-d'); // or whatever format you want

(Es posible que desee definir una constante o una variable de entorno para almacenar su zona horaria predeterminada).

puedes hacer esto por

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

o por

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

  • No garantizado con el horario de verano… la gente realmente debería estar usando objetos DateTime en estos días

    – Marcos Baker

    15 de abril de 2013 a las 6:44


  • Funcionará bien si opera en horario UTC. date_default_timezone_set(‘UTC’);

    – Patricio

    4 de mayo de 2016 a las 6:44

avatar de usuario
GIPSSTAR

Paso 1

Necesitamos establecer datos de formato en la función fecha(): La función fecha() devuelve una cadena formateada de acuerdo con la cadena de formato dada usando la marca de tiempo entera dada o la hora actual si no se proporciona una marca de tiempo. En otras palabras, la marca de tiempo es opcional y tiene por defecto el valor de time().

<?php
echo date("F j, Y");
?>

resultado: 30 de marzo de 2010

Paso 2

Para la fecha de “ayer” use la función php mktime(): La función mktime() devuelve la marca de tiempo de Unix correspondiente a los argumentos dados. Esta marca de tiempo es un número entero largo que contiene el número de segundos entre la época de Unix (1 de enero de 1970 00:00:00 GMT) y la hora especificada. Los argumentos pueden omitirse en orden de derecha a izquierda; cualquier argumento así omitido se establecerá en el valor actual de acuerdo con la fecha y hora locales.

<?php
echo mktime(0, 0, 0, date("m"), date("d")-1, date("Y"));
?>

resultado: 1269820800

Paso 3

Ahora fusiona todo y mira esto:

<?php
$yesterday = date("Y-m-d", mktime(0, 0, 0, date("m") , date("d")-1,date("Y")));
echo $yesterday;
?>

resultado: 29 de marzo de 2010

Operando de manera similar, es posible recibir el tiempo una hora atrás.

<?php
$yesterday = date("H:i:s",mktime(date("H"), 0, 0, date("m"),date("d"), date("Y")));
echo $yesterday;
?>

resultado: 20:00:00

o hace 7 días:

<?php
$week = date("Y-m-d",mktime(0, 0, 0, date("m"), date("d")-7,date("Y")));
echo $week;
?>

resultado: 2010-03-23

  • No garantizado con el horario de verano… la gente realmente debería estar usando objetos DateTime en estos días

    – Marcos Baker

    15 de abril de 2013 a las 6:44


  • Funcionará bien si opera en horario UTC. date_default_timezone_set(‘UTC’);

    – Patricio

    4 de mayo de 2016 a las 6:44

avatar de usuario
leviatán

Otro método OOP para DateTime con configuración de la hora exacta:

$yesterday = new DateTime("yesterday 09:00:59", new DateTimeZone('Europe/London'));
echo $yesterday->format('Y-m-d H:i:s') . "\n";

¿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