【问题标题】:Weird behaviour of JodaTime in different environmentsJodaTime 在不同环境中的奇怪行为
【发布时间】:2016-04-14 14:09:04
【问题描述】:

我正在使用 JodaTime 的 DateTimeFormat 来表示我的 REST API 中的一些日期。

我使用的格式是

DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss z").withZone(DateTimeZone.forID("EST"));

所以我希望我的日期表示为,例如:04/14/2016 08:50:31 EST

问题是,当我在生产环境中运行我的代码时,它运行良好(日期表示如上例所示),但当我在本地机器或暂存中运行它时,它表示如下:

2016 年 4 月 14 日 09:05:53 -05:00

我在两种环境中使用完全相同的代码。另外,Staging 和 Production 都在 Amazon 中运行,并且服务器日期设置相同,所以我不知道如何解决这个问题。

我做了一个简单的 Main 来说明和重现我的问题:

public static void main(String[] args) {
        DateTimeFormatter format = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss z")
                .withZone(DateTimeZone.forID("UTC"));
        System.out.println(new DateTime(new Date()).toString(format));
}

附:我正在使用 Java 8 和 JodaTime 2.7

【问题讨论】:

  • 您是否 100% 确定您没有在本地测试格式中使用大写字母 Z?因为我不能用给定的例子复制你的输出。
  • 我对此有 100% 的信心。我正在使用 JodaTime 2.7
  • 更新 joda 是否适合您?我刚刚尝试了 2.7,它确实不起作用。以前使用 2.9.3 我无法复制。
  • 使用 JodaTIme 2.9.3 它可以工作。奇怪的是它在 2.7 的生产环境中运行良好。我会将其更改为 2.9.3 并查看它是否适用于两种环境。谢谢!
  • @SantiagoIgnacioPoli 验证后,请在此处发布并接受答案以关闭此问题。

标签: java date jodatime


【解决方案1】:

我终于按照@dambros 的建议升级到 Joda Time 2.9.3 来让它工作。奇怪的是它在 2.7 的生产环境中工作,但这是另一天的问题。

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 2011-05-10
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    相关资源
    最近更新 更多