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

the*_*eva 6 doctrine iso8601 symfony jmsserializerbundle jms-serializer

我收到这条消息:

Invalid datetime "2017-11-07T19:46:57.118Z", expected format Y-m-d\\TH:i:sP.
Run Code Online (Sandbox Code Playgroud)

使用JMS Serializer和配置时:

jms_serializer:
    handlers:
        datetime:
            default_format: 'Y-m-d\\TH:i:sP'
Run Code Online (Sandbox Code Playgroud)

我认为我提供的日期格式正确,但显然没有.这是日期错了吗?

Oll*_*PGH 9

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

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

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

jms_serializer:
    handlers:
        datetime:
            default_format: 'Y-m-d\TH:i:s.uT'
Run Code Online (Sandbox Code Playgroud)

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

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