使用jms序列化程序和ISO8601获取日期时间格式的不匹配

时间:2017-11-07 14:50:59

标签: symfony doctrine iso8601 jmsserializerbundle jms-serializer

我收到此消息:

jms_serializer:
    handlers:
        datetime:
            default_format: 'Y-m-d\\TH:i:sP'

使用JMS Serializer和配置时:

Create table #temp2(id int,name varchar(3),val int)
Insert into #temp2 values (1,'ABC',20),(2,'ABC',40),(3,'PQR',10),(4,'PQR',30),(5,'PQR',50)

    Select id, name,Val from(
select id,name,Sum(val)over(partition by name) as Val,row_number()over(partition by name order by val desc)as Rn from #temp2 )t
where Rn=1 

我认为我提供的日期格式正确,但显然不是。这是日期错误吗?

1 个答案:

答案 0 :(得分:8)

这是一个艰难的,我以前遇到过它。我正在使用注释,所以我的修复看起来像:

 @Serializer\Type("DateTime<'Y-m-d\TH:i:s.uT'>")

所以我猜你的看起来像是:

jms_serializer:
    handlers:
        datetime:
            default_format: 'Y-m-d\TH:i:s.uT'

或者如果jms以不同于注释的方式读取yaml文件,则可能必须在“TH”之前添加另一个斜杠。

不记得为什么会发生这种情况,我只记得尝试了一百种不同的组合,直到一次有效。无论如何,日期和时间都很难。