如何将颤振中的日期解析为与Java ZoneDateTime兼容的json字符串

如何将颤振中的日期解析为与Java ZoneDateTime兼容的json字符串,json,rest,spring-boot,flutter,zoneddatetime,Json,Rest,Spring Boot,Flutter,Zoneddatetime,我有一个Flitter应用程序,需要向我的Spring Boot应用程序发送post请求。发送的对象必须具有与ZonedDateTime java类兼容的json字符串格式的日期。 模式应该是:yyyy-MM-ddTHH:MM[:ss[.S]]ZZ[{ZoneId}] 格式正确的日期示例: { 'date':'2007-12-03T10:15:30+01:00[Europe/Paris]' } 我试图使用pub.dev上的time\u machine 0.9.9库,但它没有生成正确的模式

我有一个Flitter应用程序,需要向我的Spring Boot应用程序发送post请求。发送的对象必须具有与ZonedDateTime java类兼容的json字符串格式的日期。 模式应该是:
yyyy-MM-ddTHH:MM[:ss[.S]]ZZ[{ZoneId}]
格式正确的日期示例:

{
   'date':'2007-12-03T10:15:30+01:00[Europe/Paris]'
}
我试图使用pub.dev上的
time\u machine 0.9.9
库,但它没有生成正确的模式。以下是一个例子:

import 'package:time_machine/time_machine.dart';

Map<String, dynamic> toJson() => <String, dynamic>{
    'date': '${Instant.now().inLocalZone()}'
}
Spring boot应用程序引发异常:


org.springframework.messaging.converter.MessageConversionException:无法读取JSON:无法从字符串“2019-08-07T22:24:54 UTC(+00)”中反序列化'java.time.ZonedDateTime'类型的值:未能反序列化java.time.format.DateTimeParseException)文本'2019-08-07T22:24:54 UTC(+00)“如果您只使用
Instant.now()
而不使用
。inLocalZone()
,则无法在索引19处解析。您将得到类似于
2019-08-07T22:24:54Z
,这对于您的Spring Boot应用程序应该可以

2019-08-07T22:24:54Z
是ISO 8601格式,这是Java.time API中现代Java日期和时间类的默认格式。因此,Java
ZoneDateTime
可以很好地解析它。错误消息说,
ZoneDateTime
无法解析从
inLocalZone()
获取的字符串,引用为
2019-08-07T22:24:54 UTC(+00)

起初,这是在评论中作为猜测发布的,但另一位用户确认这对他/她有效,之后我发布了这个答案


链接。

猜测:如果您使用
即时.now()
而不使用
.inLocalZone()
,您将得到类似于
2019-08-07T22:24:54Z
,这对于您的Spring Boot应用程序应该是合适的。@OleV.V。谢谢,这对我很有用。谢谢,希兹马克。如果是那样的话,我想把它作为一个答案发布。加蒂卡,如果这对你也有效,请记住接受答案。
{
    "date":"2019-08-07T22:24:54 UTC (+00)"
}