2015-04-27 24 views
0

我可能會在分析日期時感到懷疑。java.text.ParseException:Unparseable date:「2014/02/20」

以下是代碼:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD"); 
    Date d = format.parse("2014/02/20"); 
    System.out.println(d); 
+0

你的約會模式是不同的,同時更換'和'dd' DD'。[檢查](http://ideone.com/0jSVqp) – silentprogrammer

+0

初始化格式化像新的SimpleDateFormat( 「YYYY/MM/DD」) –

回答

1

您的日期格式不匹配的字符串。

Date d = format.parse("2014-02-20"); 

SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); 
+1

'DD'是一年中的一天(這不是我誰downvoted) –

+0

@SashaSalauyou感謝糾正,沒有注意到。 – TEXHIK

3

不僅有你得到了斜槓/破折號錯了,你還使用DD(年的一天),而不是dd(月日)。你想:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 

與往常一樣,讀the documentation找出到底是什麼圖案符號的意思是 - 如果你發現它的表現很奇怪,檢查模式對數據非常仔細

建議:

  • 使用Joda Time(前的Java-8)或java.time(Java 8)如果你所能;該java.util.Date/Calendar API是可怕的
  • 指定區域明確
  • 指定的時間段明確

目前正在使用的默認時區和語言環境。雖然語言環境在這種情況下可能並不重要(除非它用於選擇日曆系統;我不記得非主動),我認爲明確指定它更爲明確。時區絕對事項;如果你只想把它當作一個日期(沒有時間),那麼可能值得指定UTC - 這樣就可以很容易地與其他任何東西進行交互操作,並且你可以在基本毫秒錶示的明顯位置獲得日界限。

+0

剛剛意識到第二個問題......:D – Mena

相關問題