0

我有以下代码

public String getDate(Date date) throws Exception{

        String finalDate = "";

        SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
        finalDate = formatter.format(date);

        return finalDate;

}

我将此方法的输入传递为9999-12-30 18:30:00.0.

在我的生活环境中,结果是:12/30/9999

在我的本地环境中,结果是:12/31/9999

这种奇怪行为的原因可能是什么。提前致谢..

4

5 回答 5

2

因为你的生活环境和当地有时区差异

于 2013-07-16T09:17:44.123 回答
1

要强制您的日期格式使用特定时区,例如 UTC,您可以使用:

SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
于 2013-07-16T09:22:14.083 回答
0

@psr 正如您提到的,您的本地服务器在印度,生产在美国。

时区是问题,所以它正在制造这个问题。

由于您的生产服务器在美国,请尝试此操作。

SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
于 2013-07-16T09:26:22.873 回答
0

要记住的一件好事是它java.util.Date没有时区的概念。我总是很惊讶很少有人知道这一点。因此,如果您希望在应用程序中获得统一的结果,请确保在解析和打印时使用时区。

正如@assylias 所说,您可以设置日期格式化程序的时区来实现这一点。

于 2013-07-16T09:28:40.270 回答
0

时区格式肯定。我建议您不要使用 SimpleDateFormat,而是使用 JodaTime。

此外,如果您想防止所有环境的时区问题 formatter.setTimeZone("UTC")

于 2013-07-16T09:43:58.933 回答