2012-09-07 108 views
2

我試圖做一個簡單的字符串在Java日期轉換。我正在瀏覽某些日誌的日期,並需要將其轉換爲日期以進行一些處理。未來通過一個日期將是這樣的:字符串到日期的格式不正確

2012-09-07 19:53:33 

在我的代碼,當我嘗試將其轉換成一個Date對象我得到一個完全不同的日期。我的代碼如下所示:

String taskStart = "2012-09-07 19:53:33"; 
String dateFormat = "yyyy-MM-dd hh:MM:ss"; 
SimpleDateFormat dateFormat=new SimpleDateFormat(format); 
Date taskStartDate = dateFormat.parse(taskStart); 

我得到的輸出是這樣的:

Sat May 07 19:00:27 PDT 2016 

如何我只是單純的我原來的日期轉換爲正確的格式?

+0

我覺得有一個錯字,沒有你的意思是說'字符串格式= ... ' – ggreiner

回答

8
  1. 你指定MM(月年)的兩倍。 「分鐘」的m必須小寫。
  2. 如果你正在服用的基於24小時的時間,你需要爲了捕捉在的0-23範圍內指定的時間到指定HH,而不是hh其預計AM/PM時間(小時在1-12範圍帶有AM/PM符爲時間字符串的一部分)
  3. 最後,你的示例代碼沒有定義format變量您傳遞到構造函數爲您SimpleDateFormat對象。事實上,你正在使用的變量名dateFormat兩次,而不是定義format變量在所有 - 至少不是根據你的問題包含的代碼。

所以,你的正確格式的字符串,我認爲,應該是...

"yyyy-MM-dd HH:mm:ss" 

...和完整,正確的代碼示例:

String taskStart = "2012-09-07 19:53:33"; 
String format = "yyyy-MM-dd HH:mm:ss"; 
SimpleDateFormat dateFormat=new SimpleDateFormat(format); 
Date taskStartDate = dateFormat.parse(taskStart); 
3

據爲SimpleDateFormat你應該使用一個大寫的「H」的格式0-23小時的文檔。另外,分鐘由小寫字母「m」表示。

String dateFormat = "yyyy-MM-dd HH:mm:ss"; 
0

嘗試改變你的dateFormat定義爲:

String dateFormat = "yyyy-MM-dd HH:mm:ss"; 

請注意,在你的時間裏,HH守ld大寫爲0-23,mm應該是小寫的分鐘。

0

"yyyy-MM-dd hh:MM:ss";

MMmm月分別分鐘.....

所以它應該是...

"yyyy-MM-dd hh:mm:ss";

2

我想你應該使用日期formatter.format功能再次日期輸出轉換爲String格式:

Date formatter=new SimpleDateFormatter("yy-MM-dd HH mm ss") 

String s=formatter.format(taskStartDate)