A Doctrine DBAL Custom Mapping Type allowing the use of PHP DateTime objects automatically set to the UTC timezone.
Databases suck at timezones. The best way to deal with this is to store the date and time in UTC and separately store the timezone that should be used for display purposes. By default, PHP will create DateTime objects set the server's timezone. This custom type overrides this to set the timezone to UTC, allowing you to later convert to the proper timezone for display.
Install via composer:
composer req shapecode/doctrine-dbal-datetimeutc
Add the custom type before instantiating your entity manager:
use Doctrine\DBAL\Types\Type;
use Shapecode\Doctrine\DBAL\Types\DateTimeUTCType;
Type::addType(DateTimeUTCType::DATETIMEUTC, DateTimeUTCType::class);
Enjoy!