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

90

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 los años si se deben cambiar en los respectivos.

programador_unico
fuente
1
fecha ("dmy", hora () - 60 * 60 * 24);
NINCOMPOOP
¿Probaste mi solución? esto también funcionará con los meses cambiantes
Fabio
el momento perfecto cuando el nombre de usuario "novato" encima de mí agrega un buen significado a su comentario :)
STT LCU

Respuestas:

262

ahi tienes

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

esto también funcionará si el mes cambia

Fabio
fuente
Un pequeño detalle: su función se mete en problemas cerca de la medianoche si ese tiempo abarca el cambio de horario de verano. Pasar el mediodía explícitamente ayuda allí.
Deduplicador
1
Equivocado . 3 cosas sobre el horario de verano: 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 de hora durante las primeras horas del día (como las 2 o las 3 a. M.) Para que no afecte a los cambios de día.
Fabio
1
1. ¿Entonces esa función sabe y atiende que un día puede ser distinto de 24h? 2. Incluso un reloj roto funciona dos veces al día. 3. La hora exacta que se roba / duplica no es tan importante para el cálculo.
Desduplicador
1
no tiene sentido 1 al día no es otro que 24 hasta que DST cambie la hora y el servidor cambie la hora de acuerdo 2 por supuesto que sí, pero ese no es el punto 3, esto es muy importante en cambio, su idea podría ser correcta si la hora cambia a la medianoche, no en otras horas
Fabio
7

puedes hacer esto por

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

o por

date("F j, Y", strtotime("yesterday"));
NullPoiиteя
fuente
3
No garantizado con el horario de verano ... la gente realmente debería usar objetos DateTime en estos días
Mark Baker
Funcionará bien si funciona en hora UTC. date_default_timezone_set ('UTC');
Patrick
7

Paso 1

Necesitamos establecer datos de formato en la función date (): La función date () 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 da ninguna marca de tiempo. En otras palabras, la marca de tiempo es opcional y por defecto es el valor de tiempo ().

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

resultado: 30 de marzo de 2010

Paso 2

Para la fecha "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 entero largo que contiene el número de segundos entre la época de Unix (1 de enero de 1970 a las 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 una hora de regreso.

<?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

Gaurang P
fuente
7

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');

        ?>           
siempre aprender
fuente
vea este php.net/manual/en/book.datetime.php '.. Esto también funcionará con el cambio de mes
alwaysLearn
9
nuevo DateTime ('ayer')
Virgili García
$ ayer = nuevo DateTime ('ayer', nuevo DateTimeZone ('Tu zona horaria'));
miralong
Un poco de explicación con esta respuesta de solo código estaría bien.
mickmackusa
4

Fecha de ayer en PHP:

echo date("Y-m-d", strtotime("yesterday")); 
Dhara Talaviya
fuente
3

Si define la zona horaria en su aplicación PHP (como debería), puede hacerlo 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 variable de entorno para almacenar su zona horaria predeterminada).

Fabien Snauwaert
fuente
2

prueba esto

<?php
$yesterday = date(“d.m.Y”, time()-86400);
echo $yesterday;
liyakat
fuente
3
¡Debido al horario de verano, un día no siempre tiene 86400 segundos! ¡Así que este cálculo podría estar equivocado dos veces al año!
sbrbot
... y debido a los segundos intercalares.
Sebastian Mach
1

Otro método OOP para DateTime con la 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";
leviatán
fuente
0

También puede hacer esto usando la biblioteca Carbon :

Carbon::yesterday()->format('d.m.Y');         // '26.03.2019'

En otros formatos:

Carbon::yesterday()->toDateString();          // '2019-03-26'
Carbon::yesterday()->toDateTimeString();      // '2019-03-26 00:00:00'

Carbon::yesterday()->toFormattedDateString(); // 'Mar 26, 2019'
Carbon::yesterday()->toDayDateTimeString();   // 'Tue, Mar 26, 2019 12:00 AM'
ns16
fuente