En esta pequeña entrada, voy a hablar de cómo manejar fechas como string 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.
Además, también hice uso de error_log y otras funciones 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
1 |
$today = date('Y-m-d'); |
Mañana como string en PHP
1 |
$tomorrow = date('Y-m-d' , strtotime("+1 day")); |
Dentro de una semana como string en PHP
1 |
$one_week_later = date('Y-m-d' , strtotime("+1 week")); |
Dentro de un mes como string en PHP
1 |
$one_month_later = date('Y-m-d' , strtotime("+1 month")); |
Comprobar si un string es un datetime válido en PHP
1 |
$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
1 2 3 |
print gmdate("Y-m-d\TH:i:s\Z"); --- output --- // 2017-09-28T08:13:48Z |
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
1 2 3 |
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
Otras entradas similares
- Reemplazar bucles básicos por las funciones nativas de arrays en PHP
- Error Log
- Recortar y redimensionar imágenes en PHP – imagecopyresampled
- Cómo realizar una aplicación para consultar a la web semántica
- Reemplazar bucles básicos por las funciones nativas de arrays en PHP - 17 enero, 2021
- Resumen 2020 - 4 enero, 2021
- Chuletario de GIT - 18 enero, 2019