Edit file File name : UTCDateTimeType.php Content :<?php /* * This file is part of the Kimai time-tracking app. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace App\Doctrine; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\ConversionException; use Doctrine\DBAL\Types\DateTimeType; class UTCDateTimeType extends DateTimeType { /** * @var \DateTimeZone|null */ private static $utc; /** * @param mixed $value * @param AbstractPlatform $platform * @return mixed|string * @throws ConversionException */ public function convertToDatabaseValue($value, AbstractPlatform $platform) { if ($value instanceof \DateTime) { $value = clone $value; $value->setTimezone(self::getUtc()); } return parent::convertToDatabaseValue($value, $platform); } /** * @return \DateTimeZone */ public static function getUtc() { return self::$utc ? self::$utc : self::$utc = new \DateTimeZone('UTC'); } /** * @param mixed $value * @param AbstractPlatform $platform * @return bool|\DateTime|false|mixed * @throws ConversionException */ public function convertToPHPValue($value, AbstractPlatform $platform) { if (null === $value || $value instanceof \DateTime) { return $value; } $converted = \DateTime::createFromFormat( $platform->getDateTimeFormatString(), $value, self::getUtc() ); if (!$converted) { throw ConversionException::conversionFailedFormat( $value, $this->getName(), $platform->getDateTimeFormatString() ); } return $converted; } public function requiresSQLCommentHint(AbstractPlatform $platform) { return true; } } Save