Fechas como string en PHP

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 😉

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