作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用这种模式来尝试处理来自客户端的日期时间提交:
E MMM dd yyyy HH:mm:ss 'GMT'Z (z)
这在我本地的 ubuntu 机器上对我有用。我的一个 friend 尝试从他的 Windows 机器上提交一个表单,结果生成了
Wed Jun 24 2015 13:34:22 GMT-0500 (Central Daylight Time)
作为时间戳。这显然不同于我的模式 - 但我需要能够处理上面的格式并在我的 ubuntu 机器上适应这样的日期:
Wed Jun 24 2015 13:42:03 GMT-0500 (CDT)
如何使用 jodatime 在模式中处理此问题?
编辑:
这是我在 Playframework 中使用的表格 - 它可能是相关的。
val form = Form(mapping(
"beginDate" -> jodaDate("E MMM dd yyyy HH:mm:ss 'GMT'Z (z)"),
"endDate" -> jodaDate("E MMM dd yyyy HH:mm:ss 'GMT'Z (z)")) )
最佳答案
JavaScript 日期对象 (Date.prototype.toString
) 的字符串化版本依赖于实现,可能有很大差异,因此不应使用。
最可靠的方法是从客户端返回协调世界时 (UTC)。这也不会有任何时区问题。替换以下内容:
new Date()
与:
new Date().getTime();
(有关该行的更多信息,请参阅 SO thread)。
然后您可以将纪元作为 Long:
val form = Form(mapping(
"beginDate" -> longNumber,
"endDate" -> longNumber
)
如果你喜欢可以添加verifying
来验证,例如:
... longNumber.verifying("Invalid date", _ > DateTime.now().minusYears(2).getMillis)
然后在您的 bindFromRequest
(或您接收数据的任何位置)中,您可以执行以下操作:
new DateTime(data.beginDate)
这将产生您想要的 DateTime
。
无论您的 friend 在东京还是纽约,一切都应该是完美的。 :)
关于java - joda datetime 处理首字母缩略词和显式时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31034902/
我是一名优秀的程序员,十分优秀!