gpt4 book ai didi

java - joda datetime 处理首字母缩略词和显式时区

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:59 26 4
gpt4 key购买 nike

我正在使用这种模式来尝试处理来自客户端的日期时间提交:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com