2013-07-16 183 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」)