2013-07-16 113 views
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

什么可能是这种奇怪的行为的原因。在此先感谢..

+1

可能是一个时区的问题,你应该尝试在创建'SimpleDateFormat'给予'Locale'时区的问题。 – LaurentG

+1

您正在寻找只能在7986年发生的错误? ';)' – sp00m

+0

您的本地和现场环境之间的主要区别是什么?操作系统,服务器,... –

回答

2

因为有你的生活环境和当地

+0

我现在需要做的工作 – PSR

+0

或者将两个环境的时区设置为一个或者在代码中使用某个特定时区的代码。 – Lugaru

+0

@PSR您应该将时区设置为带有您的实时环境时区的格式化程序 – sanbhat

1

之间的时区差异要强制您的日期格式使用一个特定的时间段,例如UTC,您可以使用:

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

@psr为u提到,本地服务器是在印度和生产是在美国..

时区是问题,所以它创造了这个问题。

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

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

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

+0

在Oracle中读取或写入日期字段时还要小心:http://beansgocrazy.blogspot.com/2013/05/how-to - 读取-日期 - 从甲骨文,database.html – n0rm1e

0

确实的时区格式。我会推荐你​​,而不是使用SimpleDateFormat使用JodaTime。

另外如果你想阻止所有环境formatter.setTimeZone(“UTC”)