Carbon Updates Coming to Laravel 5.8

Thanks to Carbon maintainer @kylekatarnls you will be able to use Carbon 1.0 or Carbon 2.0 staring in Laravel 5.8. The update includes the ability to use Carbon immutable and even make your application use CarbonImmutable as the default.

According to the laravel/framework pull request you can choose which class you want for dates “such CarbonImmutable, Chronos or simply DateTime.”

If you want to learn more about migrating from Carbon 1 to Carbon 2, check out the Migrate to Carbon 2 section of the official documentation. The documentation has plenty of CarbonImmutable examples as well if you are interested in immutable date objects.

If you are curious if Carbon 2 will be supported in Laravel 5.7, only Carbon 1 is supported in Laravel 5.7. Supporting Carbon 2 required a lot of changes.

Another side-note about Carbon 2—localization has changed quite a bit and it would be worth reading the documentation to see the changes:

While Carbon 1 provided partial support and relied on third-party like IntlDateFormatter class and language packages for advanced translation, you now benefit of a wide internationalization support [in Carbon 2].

A while back I wrote about Working with Mutable and Immutable DateTime in PHP, so check it out if you need a bit of understanding in the difference in working with immutable vs. mutable dates with Carbon, Chronos, and PHP’s built-in DatetimeImmutable class.