SimpleDateFormat在本地和实时环境中的不同结果

时间:2013-07-16 09:16:05

标签: java date

我有以下代码

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

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

5 个答案:

答案 0 :(得分:2)

因为您的实时环境与本地

之间存在时区差异

答案 1 :(得分:1)

要强制dateformat使用特定时区(例如UTC),您可以使用:

SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));

答案 2 :(得分:0)

@psr你提到你的本地服务器在印度,生产在美国..

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

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

SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));

答案 3 :(得分:0)

要记住的一件好事是java.util.Date中没有时区概念。我很惊讶很少有人知道这一点 因此,如果您希望在应用程序中使用统一结果,请确保在解析和打印时使用时区 正如@assylias所说,你可以设置日期格式化程序的时区来实现这一点。

答案 4 :(得分:0)

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

此外,如果您想要阻止所有环境的时区问题formatter.setTimeZone(“UTC”)