我目前正在开发一个基于 Symfony 的 REST API 应用程序,其中我遇到了与从实体字段返回的日期值的格式相关的特定要求。在我的实体中,我有一个名为
birthdate
的字段,定义为 @ORM\Column(type="date")
。当此字段包含在 API 响应中时,它会同时提供日期和时间部分,这与项目的规范不符。相反,我需要 API 响应来专门提供日期部分,而不需要任何时间信息。
下面是实体相关部分的精简版本,包括现有的
getBirthdate()
方法:
/**
* @var \DateTime|null
*
* @ORM\Column(name="birthdate", type="date", nullable=true)
*/
private $birthdate;
// Existing getBirthdate() method
public function getBirthdate(): ?\DateTimeInterface
{
return $this->birthdate;
}
// Additional properties and methods...
虽然我考虑过使用 DateTimeImmutable 对象来确保不变性,但我不确定 getBirthdate() 方法中的精确实现。因此,我寻求有关如何利用 DateTimeImmutable 有效修改此方法以专门返回日期部分而不包含任何时间组件的指导。
预先感谢您为有效应对这一挑战提供的帮助。
如此处所示,您可以使用
Context
属性为您的字段设置特定的日期格式:
use Symfony\Component\Serializer\Annotation\Context;
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
#[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])]
private $birthdate;