Bienvenidos sean a este post, hoy veremos una función de PHP.
Esta función nos pemite crear una nueva fecha completa en base al dato que le informemos pero a diferencia de date_create este será inmutable. Es decir, el objeto generado no se podrá modificar y si necesita modificarse se hará en otro objeto. Pasemos a ver como es su sintaxis:
date_create_immutable(fecha, zona_horaria);
El primer parámetro es un objeto que contendrá la fecha que deseamos crear. El segundo será la zona horaria para nuestra fecha creada. La particularidad de esta función es que los dos parámetros son opcionales. Si omitimos al primero, para crear a la fecha utilizada los valores de fecha y tiempo del momento de ejecución. El segundo en caso de omitirlo, asigna como zona a UTC. Para entender como funciona, vamos a analizar el siguiente ejemplo:
$fecha=date_create_immutable();print_r($fecha);$zona = new DateTimeZone("America/Argentina/Cordoba");$fecha=date_create_immutable("2026-10-22",$zona);print_r($fecha);
Primero vamos a crear una fecha sin ningún parámetro, para luego mostrar la fecha generada pero con una particularidad. Si observan, usamos a print_r para que nos muestre el contenido del objeto generado. Lo siguiente es crear un objeto de tipo DateTimeZone, esta es de ejemplo, y luego generamos otra fecha inmutable pero en el mismo objeto. Para finalmente mostrar el nuevo objeto mediante print_r nuevamente. Veamos como es la salida:
$ php date_create_imm.phpDateTimeImmutable Object( [date] => 2026-03-19 17:41:35.461160 [timezone_type] => 3 [timezone] => UTC)DateTimeImmutable Object( [date] => 2026-10-22 00:00:00.000000 [timezone_type] => 3 [timezone] => America/Argentina/Cordoba)$
Como pueden observar funcionó perfectamente, y si observan nos informa que es de tipo inmutable. No falló porque el nuevo objeto no lo modifica sino que lo reemplaza directamente manteniendo la inmutabilidad en ambos. Tomemos el código anterior y hagamos el siguiente cambio:
$fecha=date_create_immutable();print_r($fecha);$zona = new DateTimeZone("America/Argentina/Cordoba");$fecha=date_create_immutable("2026-10-22",$zona);print_r($fecha);date_add($fecha, date_interval_create_from_date_string("30 days"));print_r($fecha);
Es el mismo código anterior pero ahora agregamos un date_add para incrementar a fecha con 30 días. Para finalmente mostrarlo, veamos como es la nueva salida:
$ php date_create_imm.phpDateTimeImmutable Object( [date] => 2026-03-19 17:48:45.233059 [timezone_type] => 3 [timezone] => UTC)DateTimeImmutable Object( [date] => 2026-10-22 00:00:00.000000 [timezone_type] => 3 [timezone] => America/Argentina/Cordoba)PHP Fatal error: Uncaught TypeError: date_add(): Argument #1 ($object) must be of type DateTime, DateTimeImmutable given in /home/tinchicus/lenguajes/php/d/date_create_imm.php:8Stack trace:#0 /home/tinchicus/lenguajes/php/d/date_create_imm.php(8): date_add()#1 {main} thrown in /home/tinchicus/lenguajes/php/d/date_create_imm.php on line 8$
Como mencionamos todo este tiempo, al ser inmutable no podremos modificarlo y al intentar trabajar sobre el nos genera esta excepción. Tenganlo en cuenta sobre todo a la hora de necesitar bloquear ciertas modificaciones deben tener cuenta a este tipo de dato.
En resumen, hoy hemos visto a date_create_immutable, que es, para que sirve, como se utiliza, los parámetros que podemos utilizar y un ejemplo simple para ver como trabaja. Espero les haya sido de utilidad, les dejo algunas de mis redes sociales para seguirme o recibir una notificacion cada vez que subo un nuevo post:


Donación
Es para mantenimento del sitio, gracias!
$1.50





