Tenés una fecha guardada en un objeto DateTime y necesitás enviarla a otra página… incluso puede que sea una página de otro sitio (un servicio web por ejemplo).
Suponiendo que la URL del destino es algo como http://otrositio.com?fecha=dd-mm-YYYY
, sólo se trata de tomar el string http://otrositio.com?fecha=
y concatenar el objeto.
No parece muy complicado, ¿no?
No es que sea una ciencia oculta tampoco, pero no es tan simple.
¿Cuál es el problema?
La clase DateTime no cuenta con un método __toString
, con lo cual, si intentás algo como:
<?php $d = new DateTime(); $url = 'http://otrositio.com?fecha='.$d;
Te vas a encontrar con un error:
PHP Warning: Uncaught Error: Object of class DateTime could not be converted to string
El punto es que no existe una única forma de expresar una fecha como una cadena.
Por ejemplo:
- 22-12-1977
- 22 de Diciembre de 1977
- Jueves 22 Dic. 1977
Y unas cuantas más son, en rigor, la misma fecha.
De modo que PHP no es capaz de adivinar cuál de todos estos formatos querés usar.
Cómo formatear una fecha usando PHP
Claro que, siendo un problema tan común, no es extraño asumir que existe una solución estándar.
Esta solución es precisamente el método format.
Por ejemplo, para darle formato dd-mm-YYYY
a una fecha se puede usar:
<?php $d = new DateTime(); $s = $d->format('d-m-Y');
Y luego usar el resultado para generar la URL:
<?php $d = new DateTime(); $s = $d->format('d-m-Y'); $url = 'http://otrositio.com?fecha='.$s;
Cómo transformar un string recibido por $_GET en un DateTime
Y ahora… qué pasaría si tu situación es la inversa, es decir, ¿qué deberías hacer si necesitás tomar una fecha como parámetro desde la URL?
Pues bien, aquí tu aliado será el constructor de la clase DateTime:
<?php $d = new DateTime($_GET['fecha']);
O bien, para evitar problemas, el método estático createFromFormat:
<?php $d = DateTime::createFromFormat('d-m-Y', $_GET['fecha']);
Y una vez convertido en objeto ya puedes usar todo el resto de los métodos que seguro te harán mucho más cómodo el trabajo con datos de tipo fecha.
- Cómo agregar una página de error 500 en un proyecto PHP - 31/10/2024
- ¿Cuántos contenedoresnecesita tu php? - 28/10/2024
- Cuál es el mejor framework PHP para hacer APIs REST - 25/10/2024