Fechas como string en PHP

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

$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

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 😉

Otras entradas similares

¿Y tú qué opinas?

Antes de participar en los comentarios, ten en cuenta que leeré personalmente cualquier cosa que escribas. Así que, por favor, mantén las formas y compórtate como una persona de bien.

  • (will not be published)

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>