url兼容和易于解析日期-时间格式



使用Play 2我想创建一个REST API,它应该包括

/resource/<startDateTime>

表示返回startDateTime大于URL中给出的startDateTime的所有资源项。

所以现在我需要一些DateTime格式,它可以通过URL以人类可读的格式传递,并且仍然容易解析为Play 2控制器中的Java Date对象。在这方面有什么提示/最佳实践吗?谢谢你的提示!

更新:如果Play能为我做解析就更好了。对于路由配置中的java.util.Date,我得到错误

 No QueryString binder found for type java.util.Date. Try to implement an implicit QueryStringBindable for this type. 

是否有预定义的东西来解析日期?

更新:

预期的输入:例如

http://site.com/resource/20121231-141557 # 2012/12/31 14:15:57

或其他东西,易于阅读-我不在乎,只要它可以使用URL传输并且易于解析为Date对象。

日期有一个ISO标准,编号8601。

http://en.wikipedia.org/wiki/ISO_8601

日期和时间值按最重要到最不重要的顺序排列:年、月(或周)、日、时、分、秒和秒的小数。

你似乎有两个问题:

  1. 如何格式化和解析日期容易?我认为在java中处理日期最好的库是Joda Time。它具有格式化和解析不同格式日期的方法。
  2. 如何用自定义解析器定义路由?为此,您需要定义自己的QueryStringBindable。请看下面这个关于double的回答。

您可以在这里查看本地Play2路径绑定:https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/mvc/Binders.scala#L251

目前,参数中没有任何东西可以处理Date。

但是你可以在DateTime (JodaTime)上面写你自己的PathBinder,使用ISO 8601格式(使用ISODateTimeFormat)

我认为这将是一个很好的Pull request;)

相关内容

  • 没有找到相关文章

最新更新