jueves, 31 de octubre de 2013

PHP strtotime: el mes de la marmota

Nos encontramos a vísperas de Halloween, aún es octubre, hace un mes también era octubre y no le he cogido prestado el coche a Marty McFly.

En resumidas cuentas, la función strtotime de PHP al realizar una operación de suma/resta de meses, donde el mes fijado como actual tiene más días que el mes resultante, el resultado final no será el esperado.

Por ejemplo, nos encontramos a 31 de octubre y hace un mes era septiembre, pero septiembre solo tiene 30 días. Si retrocedemos un mes utilizando la función strtotime, seguirá siendo octubre, concretamente 1 de octubre.

date('d-m-y', strtotime('-1 month')); // 01-10-13
Así que si estáis realizando operaciones de fechas, especialmente con meses, y no queréis más sorpresas a final de mes (días 29, 30, 31), os sugiero que tengáis en cuenta lo anterior.

Pero no todo iban a ser malas noticias, siempre hay algún que otro remedio con que el que podréis evadir el problema: strtotime_months.

No hay comentarios:

Publicar un comentario