2017-08-03 15 views
0

为什么以下iso格式的日期分析不正确?错误地解析了Playframework - 带请求查询参数中带有时区的ISO格式日期

GET /find?account.create_date=2016-06-01T00:00:00.000+05:45 

在控制器中,如果我打印queryString,我得到以下结果:

println(request.queryString) 
//result - Map(account.create_date -> Buffer(2016-06-01T00:00:00.000 05:45)) 

正如你所看到的,时区标志缺失的05:45代替+05:45。但是,负时区运作良好。按原样成功解析2016-06-01T00:00:00.000-05:45

回答

0

这是因为ISO日期格式不符合URL编码(RCF-3896对空间和字符有特殊用处)。 Playframework将自动对您在URL中传递给您的查询串进行URL解码。

正确的日期时间字符串应该已经

GET /find?account.create_date=2016-06-01T00%3A00%3A00.000%2B05%3A45 

你可以阅读更多关于URL编码的位置:https://en.wikipedia.org/wiki/Percent-encoding