En esta pequeña entrada, voy a hablar de cómo manejar fechas como string en PHP y comparar fechas en PHP.
Últimamente he tenido problemas con fechas en PHP, después de mucho buscar por Internet y probar. Finalmente encontré la solución a lo que estaba buscando y de una manera bastante limpia. Por eso me he animado a este post acerca de cómo usar fechas como string en PHP y cómo usar PHP para comparar fechas.
Además, también hago uso de error_log php y otras características de PHP de las que ya os he hablado anteriormente.
Voy a dejar algunas funciones que he usado y que son lo más básico, pero que no recordaba y ha sido algo interesante, a pesar de no ser complejo.
Y no está de mal tenerlas a mano, porque al final en casi todos los proyectos se acaba trabajando con fechas.
Día de hoy como string en PHP
$today = date('Y-m-d');
Mañana como string en PHP
$tomorrow = date('Y-m-d' , strtotime("+1 day"));
Dentro de una semana como string en PHP
$one_week_later = date('Y-m-d' , strtotime("+1 week"));
Dentro de un mes como string en PHP
$one_month_later = date('Y-m-d' , strtotime("+1 month"));
Comprobar si un string es un datetime válido en PHP
$valid_string = (bool) strtotime($response->from_date_as_string);
Si el resultado de `$valid_string` es true -> El string es un date válido en PHP.
Si el resultado de `$valid_string` es false -> El string no es un date válido en PHP.
UTC Time en PHP
print gmdate("Y-m-d\TH:i:s\Z");
--- output ---
// 2017-09-28T08:13:48Z
Comparar fechas como string en PHP
Lo más sencillo para comparar fechas como string en PHP es usar la función nativa de PHP strtotime() que lo que va a hacer es convertir un string a un UNIX timestamp. En caso de error, nos devolverá un false.
Un ejemplo de comparar fechas sería el siguiente.
<?php
$today = strtotime('today');
$tomorrow = strtotime('tomorrow');
if ( $tomorrow > $today) {
print "$tomorrow es mayor que $today";
} else {
print "$tomorrow NO es mayor que $today";
}
// OUTPUT
1620198000 es mayor que 1620111600
Puedes encontrar este pequeño script PHP para comparar fechas aquí.
Extra — Comparar fechas como string en MySQL
Además de haber tenido que calcular y comparar fechas en PHP, en la base de datos del proyecto, las fechas se almacenaban como string, así que también tube que hacer alguna modificación.
Para ello después de buscar, encontré la función TIMESTAMPDIFF W3Resource.
Usando la función `TIMESTAMPDIFF` para comparar string convirtiendolos a timestamp.
La función indica que el primer parámetro es la unidad a comparar, en este caso en segundos.
El valor en segundos será:
- =0 si son iguales.
- >0 si la segunda fecha es mayor que la primera
- <0 si la segunda fecha es menor que la primera
Ejemplo de uso en una Query
SELECT * FROM table WHERE TIMESTAMPDIFF(SECOND, '2017-09-28 17:30', table.time) > 0 AND TIMESTAMPDIFF(SECOND, '2017-09-28 17:35', table.time) < 0;
Con esta query tendremos todos los datos comprendidos entre 2017-09-28 17:30 y 2017-09-28 17:35 , es decir todo lo que ha ocurrido entre las 17:30 y las 17:35 del día 28 de septiembre de 2017.
Enlaces de interés
http://php.net/manual/es/function.strtotime.php
http://php.net/manual/es/function.date.php
https://www.w3resource.com/mysql/date-and-time-functions/mysql-timestampdiff-function.php
Comparte 🙂
Si te ha gustado el contenido de este artículo no te olvides de compartirlo ya que con eso me harías muy feliz. GRACIAS 😉
Participa 😉
Además de todo ello, si tienes dudas o puedes aportar algo con un comentario, no dudes en hacerlo. GRACIAS 😉