看起來像一個足夠簡單的問題讓我對日期解析很頭痛。用Java中的時區測試日期解析器
在我的java項目中,我有一個自定義日期解析器util類,它處理它可能遇到的所有不同種類的日期字符串格式。
我最近不得不添加下面的用例:
DateFormat fileDateImport = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss zzz");<br />
return fileDateImport.parse(stringToParse);
我現在想測試這一功能,但我一直有,因爲日期不作爲翻譯我期望的問題。我試了幾件事,這裏是我的測試現在的樣子(我的電腦本地設置在CST中)。
Date returnDate = DateParser.parseDate("Wed, 24 Sep 2014 00:00:00 BST");
final SimpleDateFormat convertedTime = new SimpleDateFormat("ddMMyyyyhhmmss");
convertedTime.setTimeZone(TimeZone.getTimeZone("BST"));
assertEquals("24092014000000", convertedTime.format(returnDate));
returnDate對象顯示「Tue Sep 23 18:00:00 CDT 2014」,這是我所期望的。 CST比BST晚了6個小時。但是,我不想檢查此日期的toString(),因爲此測試可能會在不同的時區運行。
格式的最終輸出是「24092014050000」。我不確定它是如何得到這個時間的,它從最初的returnDate開始超過11個小時。
我試過在日曆對象中設置returnDate時間,但我得到了相同的結果。
任何人比我更方便日期比我有任何想法?
如果你能夠使用Java 8中引入一個更好的日期模型,尋找'ZonedDateTime'。同時請記住BST = GMT + 1。 – Caleryn 2014-09-29 14:28:24
這很好理解,但不幸的是我無法控制!我們目前的Java版本是7. – 2014-09-29 14:32:17
不是一個直接的解決方案,但可能更好地使用HH而不是hh。你可能會發現它不是我的下午5點。並嘗試輸出區域(Z)以幫助您瞭解正在發生的事情。 – Caleryn 2014-09-29 14:39:06