Valentin Udaltsov
Contributed by Valentin Udaltsov in #25582

The DateTimeImmutable class was introduced in PHP 5.5. It provides the same API as DateTime, but when calling to its modify() or set*() methods, it returns a new DateTimeImmutable object to not change the original value.

In recent Symfony versions we added support for immutable dates in several parts of the framework. In Symfony 4.1 we finished a long-standing petition from the community to add support for immutable dates in Symfony Forms.

When building a form with a DateTimeType, DateType or TimeType field, set their input options to the new datetime_immutable value:

1
2
3
4
5
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;

$builder->add('startsAt', DateTimeType::class, array(
    'input' => 'datetime_immutable',
));

Now you can set a DateTimeImmutable object as the value of this field and when the form is submitted and valid, you'll get a DateTimeImmutable object back with the new value set by the user.

Published in #Living on the edge