gpt4 book ai didi

Symfony 序列化 : changing default DateTimeNormalizer format

转载 作者:行者123 更新时间:2023-12-02 16:51:16 24 4
gpt4 key购买 nike

我正在尝试序列化一个具有一些\DateTime 字段的实体类。一切正常,但\DateTime 对象使用以下格式转换为字符串:“2019-10-21T01:05:12+00:00”,而我只想获取日期部分:“2019-10-21 ”。

Symfony documentation提到了默认格式,但没有解释如何配置它:

DateTimeNormalizer This normalizer converts DateTimeInterface objects (e.g. DateTime and DateTimeImmutable) into strings. By default, it uses the RFC3339 format.

是否可以更改默认的 DateTime 规范化格式以及如何更改?

实体类:

class Fact
{
/**
* @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"})
* @Groups({"api"})
*/
private $created_on;
}

规范化示例:

use Symfony\Component\Serializer\SerializerInterface;

class FactController extends AbstractController
{
private $serializer;

public function __construct(SerializerInterface $serializer)
{
$this->serializer = $serializer;
}

public function view($id)
{
....
$data = array(
'fact' => $this->serializer->normalize($fact, null, ['groups'=> 'api']),
);
...
}
}

最佳答案

事实证明,'$context' 数组被传递给每个支持的 Normalizer 的 normalize() 函数。内置规范器定义了它们接受的数组键及其默认值。

在我的案例中,相关的键是 'datetime_format',默认为 \DateTime::RFC3339。格式必须是 \DateTime::format()\DateTime::createFromFormat() 方法接受的格式 - 这些函数用于规范化/反规范化。

在我的例子中正确的用法是:

    public function view($id)
{
....
$data = array(
'fact' => $this->serializer->normalize($fact, null, ['groups'=> 'api',
'datetime_format' => 'Y-m-d']),
);
...
}

关于Symfony 序列化 : changing default DateTimeNormalizer format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58609623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com