2013-11-28 46 views
0

您好,我有日期在這種格式2013-10-31T19:00:00Z現在我想顯示此日期爲yyyy/mm/dd這format.i已經使用這個代碼,但它給我的異常好心幫我我想字符串解析成Java日期對象

String startDateString = "2013-10-31T19:00:00Z"; 

     DateFormat df = new SimpleDateFormat("yyyy/mm/dd"); 
     Date startDate; 
     try { 
      startDate = df.parse(startDateString); 
      String newDateString = df.format(startDate); 
      System.out.println("Date is "+newDateString); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
+1

向我們展示了異常。 –

+0

http://stackoverflow.com/questions/2201925/converting-iso8601-compliant-string-to-java-util-date – chrylis

回答

2

嘗試此

String DateStr="2013-10-31T19:00:00Z"; 
    SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd"); 
    Date d = new SimpleDateFormat("yyyy-MM-dd").parse(DateStr); 
System.out.println(sim.format(d)); 

輸出 2013年10月31日

1

您需要單獨的SimpleDateFormat來解析日期字符串。試試這個:

String startDateString = "2013-10-31T19:00:00Z"; 
DateFormat originalFormat = new SimpleDateFormat("yyyy-mm-dd'T'HH:MM:SS'Z'"); 
DateFormat df = new SimpleDateFormat("yyyy/mm/dd"); 
Date startDate; 
try { 
    startDate = originalFormat.parse(startDateString); 
    String newDateString = df.format(startDate); 
    System.out.println("Date is " + newDateString); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
2

您可以使用SimpleDateFormatparse方法來解析您的日期,然後使用format方法將其輸出到您喜歡的格式。

試試這個:

String startDateString = "2013-10-31T19:00:00Z"; 

DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'"); 
DateFormat outputFormat = new SimpleDateFormat("yyyy/MM/dd"); 

Date date = inputFormat.parse(startDateString); 
System.out.println("Date is " + outputFormat.format(date)); 

輸出:

Date is 2013/10/31 
+0

會更好,如果你寫一些解釋,比單純的代碼 –

2

那是因爲你明確告訴Java來尋找一個4位數字的年份之後的2位數月份和2位數日期。直接從文檔中,你想要的是

"yyyy-MM-dd'T'HH:mm:ssZ" 
1

你需要兩個不同的DateFormat。一個用於解析日期,另一個用於格式化日期。

String startDateString = "2013-10-31T19:00:00Z"; 

    DateFormat df = new SimpleDateFormat("yyyy/mm/dd"); 
    DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:SS'Z'"); 
    Date startDate; 
    try { 
     startDate =df1.parse(startDateString); 
     String newDateString = df.format(startDate); 
     System.out.println("Date is "+newDateString); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
1
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
String dateInString = "07/06/2013"; 

try { 

    Date date = formatter.parse(dateInString); 
    System.out.println(date); 
    System.out.println(formatter.format(date)); 

} catch (ParseException e) { 
    e.printStackTrace(); 
} 

下面是簡單的例子

0

嘗試這種情況:

 try { 
      String startDateString = "2013-10-31T19:00:00Z"; 
      DateFormat input = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'"); 
      DateFormat output = new SimpleDateFormat("yyyy/MM/dd"); 
      Date date = input.parse(startDateString); 
      System.out.println("Date is " + output.format(date)); 
     } catch (ParseException e) { 

      e.printStackTrace(); 
     } 

代碼指着一個又一個簡單的錯誤

您編碼爲DateFormat df = new SimpleDateFormat("yyyy/mm/dd");

這裏mmminutes,爲month使用MM