問候堆棧溢出,爲什麼Java SimpleDateFormat在某些服務器上而不是其他服務器上工作?
我遇到了一個奇怪的問題,我正在爲位於雅典的外國辦事處實施一個應用程序。構建時,應用程序是一個.war文件,部署在Tomcat實例上。
只是爲了一些背景信息,這同一個應用程序成功地工作在幾個不同的操作系統(Ubuntu的12.04,在Windows Server 2012 R2等),無論是在美國和其他國家不同的Java/Tomcat的配置。
但是我用來爲雅典安裝應用程序的操作系統是Windows Server 2008 R2。在這個服務器上安裝了Tomcat 8.5.4使用的Java JRE 1.8.0_111。這臺服務器位於雅典。
一切工作正常,除了我提交日期字段到我的控制器方法的任何地方的應用程序。當試圖日期字符串提交給我的控制器在整個應用程序的不同部分,我得到以下信息:
Failed to convert the value of 'java.lang.String' to required type'java.util.Date';
nested exception is java.lang.illegalArgumentException: Could not parse text
[7/28/2017 7:00 AM] into any available date input formats.
請記住,當我這個應用程序部署到Tomcat實例上的其他服務器,一切正常罰款,我沒有收到此錯誤消息。
在試圖解決這個錯誤,我決定改變我的請求參數之一,從類型:
@RequestParam("date") Date date
到
@RequestParam("date") String dateString
然後我用的Java的SimpleDateFormat轉換的字符串到日期:
SimpleDateFormat sdf_date = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
String startDate = dateString;
Date date = sdf_date.parse(startDate);
傳遞給上述函數的日期字符串是:
11/25/2017 12:00 pm
我在不同OS/Tomcat配置的幾個測試服務器上測試了它,它像一個魅力一樣工作。但是,當在位於雅典的Windows 2008 R2服務器上進行測試時,我仍然收到錯誤消息。我不再收到上述錯誤,但我沒有收到以下:
java.text.ParseException: Unparseable date: "11/25/2017 12:00 pm"
我不清楚爲什麼這個完全相同的Java代碼將能夠使用一些服務器,但沒有人對相同的SimpleDateFormat模式解析同日。這對我來說似乎很陌生。
請讓我知道如果你需要任何額外的信息,我會很樂意澄清。
謝謝!
編輯:服務器在服務器端調試的截圖在雅典:
正在傳遞到控制器方法「dateString」
難道是部署問題?像一些jar的舊版本? – talex
我正在調查,但奇怪的事情是相同的.war文件將在其他服務器上工作沒有問題。 – MotoDave452
它可以是日期格式問題嗎?在歐洲,日期將採用其他格式,例如「」dd/MM/yyyy ...「」。 –