2017-01-04 168 views
0

使用SimpleDateFormat格式化日期時,我得到日期和月份。但是,這一年減​​少了一個。可能是什麼問題呢?Android日期格式錯誤

public static String getFormattedDate(String date) { 

    SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-mm-dd HH:MM:SS"); 
    Date testDate = null; 
    String newFormat="space"; 

    try { 
     testDate = sourceFormat.parse(date); 
     SimpleDateFormat formatter = new SimpleDateFormat("d/MMM/yyyy"); 
     newFormat = formatter.format(testDate); 
     Log.i("Formatted Date",newFormat); 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 

    return newFormat; 
} 

的實際日期和日期格式是

01-04 15:34:00.233 21858-21858/com.cube_me.cubeme I/Actual Date: 2016-12-19 00:00:00 
01-04 15:34:00.233 21858-21858/com.cube_me.cubeme I/Formatted Date: 19/Dec/2015 
+1

你的源格式是4位年,2位分鐘,2位數的日期在一個月內,2位數小時,2位數月份,2位數毫秒。那真的是你想要的嗎?恕我直言,它應該是'「yyyy-MM-dd HH:mm:ss」 - >記住,日期格式區分大小寫! –

+0

將分鐘和秒更改爲小寫,修復了問題。謝謝你的答案。 –

回答

4

這是因爲你在這裏有一個mistke:

yyyy-mm-dd HH:MM:SS 

應該

yyyy-MM-dd HH:mm:ss 

所以你放錯地方分鐘(mm)與月份(MM)。如果你通過00作爲一個月,那麼你得到12月(00是在01之前,所以它被解析爲12),前一年是正確的。

另外SS爲毫秒,ss給你幾秒鐘。

檢查信件表這裏https://developer.android.com/reference/java/text/SimpleDateFormat.html

-1

使用

SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS"); 

,而不是

SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-mm-dd HH:MM:SS");