У меня есть объект, который хранит дату и время, и я использую JMSSerializer для возврата этого поля через API:
/**
* @ORM\Column(type="datetime")
*
* @Serializer\Type("DateTime<'d/m - H:i', 'Europe/Paris'>")
*/
private $creationDateTime;
В базу данных creationDateTime сохраняется с часовым поясом UTC.
Изменение формата правильно применяется к ответу API JSON (например, замена «d / m H: i на d / m / YH: i»), но возвращаемое время всегда является сохраненным (UTC).один), а не ожидаемый (Европа / Париж), даже если я установил совершенно другой часовой пояс.
Например, если сохраненное время 15:04, сериализованное время, возвращаемое API, все еще равно 15:04 (UTC), а не ожидаемое (16:04, Европа / Париж).
Можно ли применить часовой пояс к сохраненной дате при сериализации ответа?
Спасибо заadvance.
Я использую: Symfony 4, JMS-SerializerBundle 3.1.0, JMS-Serializer 2.1.0
РЕДАКТИРОВАТЬ:
Здесь я сделал обход, нобезусловно, не лучший способ решить эту проблему:
/**
* Returns the signal creation date and time
*
* @Serializer\Type(
* "DateTime<'d/m/Y H:i'>"
* )
*
* @Serializer\Groups({"signals"})
* @Serializer\VirtualProperty()
* @Serializer\Expose
*/
public function getCreationDateTime(): \DateTime
{
$dateTime = $this->creationDateTime;
$dateTime->setTimeZone(new \DateTimeZone("Europe/Paris"));
return $dateTime;
}