Playframework - 请求查询参数中带有时区的ISO格式日期未正确解析

时间:2017-08-03 06:54:07

标签: scala playframework jodatime

为什么不正确地解析以下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已成功解析。

1 个答案:

答案 0 :(得分:0)

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

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

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

您可以在此处详细了解网址编码:https://en.wikipedia.org/wiki/Percent-encoding