Diferentes formas de comparar fechas en PHP
-
Compara fechas con
strtotime()
ytime()
-
Compare fechas con la función
Date()
y verificación condicional - Comparar fechas con una función personalizada
-
Comparar fechas con el objeto PHP
Datetime
-
Comparaciones de fechas múltiples con
Arsort()
ystrtotime()
Este artículo le enseñará cómo comparar fechas en PHP usando 5 técnicas diferentes. De estas técnicas, 4 usarán funciones PHP integradas como strtotime()
, time()
y date()
de una forma u otra. La última técnica utilizará el objeto PHP DateTime
.
Compara fechas con strtotime()
y time()
El strtotime()
es una función de tiempo integrada en PHP. Su uso principal es convertir una cadena de fechas legibles por humanos en una marca de tiempo UNIX igual. Puede analizar variedades de cadenas y convertirlas a su marca de tiempo adecuada. Ejemplos de este tipo de cadenas son 2 weeks ago
y next week
.
La función PHP time()
devuelve la hora actual. Este tiempo es el número de segundos desde la época de UNIX. Si necesita convertir estos segundos a la fecha actual, necesitará la función date()
integrada de PHP.
Al combinar estas 2 funciones, puede comparar fechas siguiendo los siguientes pasos.
Primero, proporciona una cadena de fecha a strtotime()
. Lo convertirá a su marca de tiempo UNIX.
Reste esta marca de tiempo UNIX de la hora actual usando la función time()
.
Puede usar el resultado de este cálculo y una verificación condicional para comparar fechas.
<?php
$dateString = '2021-12-12 21:00:00';
// This will check if the time
// is in the last day
if ((time() - (60 * 60 * 24)) < strtotime($dateString)) {
echo "Date in the last 24hrs";
} else {
echo "Date is <b>NOT</b> in the last 24hrs";
}
?>
Producción :
Date is <b>NOT</b> in the last 24hrs
Compare fechas con la función Date()
y verificación condicional
La función date()
de PHP le permite formatear una marca de tiempo en el formato deseado. La marca de tiempo en cuestión, los segundos entre la hora actual y la época de UNIX. La época UNIX es el tiempo desde la medianoche del 1 de enero de 1970.
El valor de la función date() depende de la zona horaria configurada en su archivo php.ini
.
Si desea comparar una fecha determinada utilizando la función date()
, haga lo siguiente.
- Convierta la marca de tiempo actual al formato deseado
- Escriba la fecha que le gustaría comparar en una cadena apropiada
- Realice una verificación condicional entre la cadena de fecha y la marca de tiempo actual
<?php
$todaysDate = date("Y-m-d H:i:s");
$dateString = "2021-10-12 10:00:00";
if ($dateString < $todaysDate) {
echo "The date you supplied is LESS than the current date";
} else {
echo "The date you supplied is NOT LESS than the current date";
}
?>
Producción :
The date you supplied is LESS than the current date
Comparar fechas con una función personalizada
Utiliza una función para evitar la repetición de código. El primer ejemplo de este tutorial mostró cómo puede comparar fechas con strtotime()
y time()
.
En este caso, creará una función. Esta función aceptará una cadena de fecha como parámetro, que a su vez pasará a strtotime()
. Pasas la cadena "today"
a otra strtotime()
dentro de la función.
Ahora, tienes dos cosas que puedes comparar, que son,
- El tiempo que desea comparar
- La cadena ‘hoy’ pasó a otra
strtotime()
Puede utilizar una comparación estricta para comparar las fechas con estos criterios. Puede crear una función de comparación para verificar lo siguiente.
- Fecha de hoy
- Una fecha pasada
- Una fecha futura
Lo siguiente verificará si la cadena de fecha proporcionada es una fecha actual:
<?php
function checkToday($time) {
$convertToUNIXtime = strtotime($time);
$todayUNIXtime = strtotime('today');
return $convertToUNIXtime === $todayUNIXtime;
}
if (checkToday('2021-12-13')) {
echo "Yeah it's today";
} else {
echo "No, it's not today";
}
?>
Producción :
No, it's not today
Compruebe si hay una fecha pasada.
<?php
function checkThePast($time) {
$convertToUNIXtime = strtotime($time);
return $convertToUNIXtime < time();
}
if (checkThePast('2021-12-13 22:00:00')) {
echo "The date is in the past";
} else {
echo "No, it's not in the past";
}
?>
Producción :
The date is in the past
Puede verificar una fecha futura con lo siguiente.
<?php
function checkTheFuture($time) {
$convertToUNIXtime = strtotime($time);
return $convertToUNIXtime > time();
}
if (checkTheFuture('2021-12-13 22:00:00')) {
echo "The date is in the future";
} else {
echo "No, it's not in the future";
}
?>
Producción :
No, it's not in the future
Comparar fechas con el objeto PHP Datetime
La clase PHP DateTime
le brinda una forma orientada a objetos de trabajar con cadenas de fecha en PHP. Tiene un conjunto de métodos con los que puede trabajar. Encapsula algo de lógica detrás de la escena y le brinda una interfaz limpia para trabajar.
En comparación con strtotime()
y date()
, DateTime
tiene las siguientes ventajas:
- Puede funcionar con más cadenas de fecha
- Es más fácil trabajar con
- Proporciona una comparación directa de fechas
Cuando pretenda comparar fechas con DateTime
, haga lo siguiente.
- Analice la cadena de fecha en un objeto
DateTime
- Compara las fechas con operadores como menor que ( < ), mayor que ( > ) o igual a ( == )
<?php
$firstDate = new DateTime("2020-12-13");
$secondDate = new DateTime("2021-12-13");
// Compare the date using operators
if ($firstDate > $secondDate) {
echo "First date is GREATER than the second date";
} else if ($firstDate < $secondDate) {
echo "First date is LESS than the second date";
} else {
echo "First and second dates are EQUAL";
}
?>
Producción :
First date is LESS than the second date
Comparaciones de fechas múltiples con Arsort()
y strtotime()
Si desea comparar muchas cadenas de fechas, puede almacenarlas en un array.
Con las fechas en la matriz, puede usar un método de bucle adecuado para trabajar con la matriz. Por ejemplo, foreach
.
En el bucle dentro de foreach
, puede convertir cada fecha a su marca de tiempo UNIX usando strtotime()
. Después, puedes ordenar las fechas con arsort()
.
<?php
// Store the dates
$dateArray = ["2020-09-30", "2021-12-13", "2021-08-05"];
// Convert each date to a UNIX timestamp
// and store them in another array
$dateArrayTimestamp = [];
foreach ($dateArray as $date) {
$dateArrayTimestamp[] = strtotime($date);
}
// Sort the dates,
arsort($dateArrayTimestamp);
// Print the date starting with the
// current date
foreach ($dateArrayTimestamp as $key => $value) {
echo "$key - " . date("Y - m - d", $value) . "<br>";
}
?>
Producción :
1 - 2021 - 12 - 13<br>2 - 2021 - 08 - 05<br>0 - 2020 - 09 - 30<br>
Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.
LinkedInArtículo relacionado - PHP DateTime
- Cómo obtener el último día del mes con las funciones PHP
- Cómo calcular la diferencia entre dos fechas usando PHP
- Cómo convertir DateTime a cadena en PHP
- Cómo obtener el año actual en PHP
- Cómo convertir una fecha en una marca de tiempo en PHP
- Cómo convertir una marca de tiempo en una fecha u hora legible en PHP