【发布时间】: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 验证后,请在此处发布并接受答案以关闭此问题。