2014-04-28 45 views
0

我的代碼有什麼問題我無法從日期時間得到我想要解析的確切輸出?錯誤的輸出解析日期從DateFormat使用日曆

String convertDate="03/19/2014 5:30:10 PM"; 
DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss", Locale.CANADA); 
Date myDate=new Date(); 
try { 
    myDate=df.parse(convertDate); 
    final Calendar c = Calendar.getInstance(); 
    c.setTime(myDate); 
    System.out.println("Year = " + c.get(Calendar.YEAR)); 
    System.out.println("Month = " + (c.get(Calendar.MONTH))); 

    System.out.println("Day = " + c.get(Calendar.DAY_OF_MONTH)); 
} catch (ParseException e1) { 
    e1.printStackTrace(); 
} 

而且我的輸出是

- 04-28 03:07:15.322: I/System.out(25095): Year = 2015 
- 04-28 03:07:15.322: I/System.out(25095): Month = 6 
- 04-28 03:07:15.322: I/System.out(25095): Day = 3 

它必須是

- Year = 2014 
- Month = 03 
- Day = 19 
+0

記住c.get(的Calendar.MONTH)是從零開始的(即一月是一個月0等)。 – ianhanniballake

回答

1
DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.CANADA); 

現在嘗試......它會工作。

有了這個,你必須在你的月份中加1。代碼是在這裏:

String convertDate="03/19/2014 5:30:10 PM"; 
     DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.CANADA); 
     Date myDate=new Date(); 
     try { 
      myDate=df.parse(convertDate); 
      final Calendar c = Calendar.getInstance(); 
      c.setTime(myDate); 
      int y,m,d; 
      y=Calendar.YEAR; 
      System.out.println("Year = " + c.get(Calendar.YEAR)); 
      //Log.d("Year", y); 
      System.out.println("Month = " + (c.get(Calendar.MONTH)+1)); 

      System.out.println("Day = " + c.get(Calendar.DATE)); 
     } catch (ParseException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
+1

「MM/dd/yyyy HH:mm:ss」不是「2014年3月19日5:30:10 PM」的格式,結果仍然錯誤,這一次月份= 2應該是月份= 3 –

+0

是你的方法是正確的..而另一個問題是錯誤的月份輸出。 – DreamBigAlvin

+0

最好格式化你的代碼。 – Nejat

2

從這個

dd/MM/yyyy HH:mm:ss 

更改日期格式以這種

MM/dd/yyyy HH:mm:ss 

和月份是基於Zero (0)指數。因此,檢索月份索引後,您必須添加1才能獲得當前月份。

因此,嘗試打印當月如下...

int currentMonth = c.get(Calendar.MONTH) + 1; 

System.out.println("Month = " + currentMonth); 

或者

System.out.println("Month = " + (c.get(Calendar.MONTH)+1)); 
+0

我也試過,但它仍然是一個錯誤的輸出它給了我一個月= 21 – DreamBigAlvin

+0

我已經改變我的格式化爲DateFormat df = new SimpleDateFormat(「MM/dd/yyyy HH:mm:ss aa」,Locale.CANADA) ; – DreamBigAlvin

+0

我已經更新了我的答案。這只是錯字。 –