2013-03-15 67 views
10

如何解析此日期字符串2013-03-13T20:59:31 + 0000 in Date對象?如何解析2013-03-13T20:59:31 + 0000日期字符串至日期

我嘗試過這種方式,但沒有工作。

DateFormat df = new SimpleDateFormat("YYYY-MM-DDThh:mm:ssTZD"); 
Date result = df.parse(time); 
+0

vrijeme?這是什麼 ? – yannicuLar 2013-03-15 13:13:10

+1

假設'vrijeme =「2013-03-13T20:59:31 + 0000」'檢查下面的答案。 TZD最後的意圖是什麼? Z是你需要的時區。 D會在同一天,但你沒有在'vrijeme'中,所以它不會正確解析 – msam 2013-03-15 13:37:48

+0

下一次,請記住包括翻譯鏈接。至少它會讓我們免於猜測你的語言;)給變量 – yannicuLar 2013-03-15 14:46:45

回答

22

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");

年份爲小寫字母y。 是在其未在2013-03-13T20:59:31+0000相關的日期(如「T」的輸入任何字符應''被引用。

對於定義模式字母的列表見documentation

解析檢查給定的日期是在你指定的格式 打印日期以特定格式檢查見下文後:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ"); 
Date result; 
try { 
    result = df.parse("2013-03-13T20:59:31+0000"); 
    System.out.println("date:"+result); //prints date in current locale 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    sdf.setTimeZone(TimeZone.getTimeZone("GMT")); 
    System.out.println(sdf.format(result)); //prints date in the format sdf 
} 
+0

不能正常工作.... – 2013-03-15 13:52:32

+0

@HarisDautović你使用正確的'圍繞T?這是Alt + 39沒有其他撇號像' – msam 2013-03-15 13:59:25

+0

ALT + 39 =)....我找到解決方案,檢查我的答案。 – 2013-03-15 14:03:14

20

嘗試:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 

檢查http://developer.android.com/reference/java/text/SimpleDateFormat.html

具體

    yyyy-MM-dd 1969-12-31 
       yyyy-MM-dd 1970-01-01 
      yyyy-MM-dd HH:mm 1969-12-31 16:00 
      yyyy-MM-dd HH:mm 1970-01-01 00:00 
      yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800 
      yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000 
    yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800 
    yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000 
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800 
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000 
+0

謝謝你的回答,嗯..我有例外:未知模式字符'T' – 2013-03-15 13:15:05

+0

嘗試DateFormat df = new SimpleDateFormat(「yyyy-MM-dd'T'HH:mm:ssZ」) ; – Nermeen 2013-03-15 13:55:17

3

請試試這個:

SimpleDateFormat formatDate; 
formatDate= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 
0

感謝誰試圖幫助我的所有人......(+1)的所有.......

這工作:"yyyy-MM-dd'T'HH:mm:ss"

+0

您可以在時區ss後添加Z,否則「2013-03-13T20:59:31 + 9999」也將被接受 – msam 2013-03-15 14:04:42

+0

當我添加Z(「yyyy-MM-dd'T'HH:mm:ssZ」),小時不解析正確,增加1。 – 2013-03-15 14:08:28

+1

那是因爲當你打印時,日期被重新格式化爲你的語言環境。你在GMT + 1嗎? ...我將添加代碼以向您展示如何以GMT格式輸出日期 – msam 2013-03-15 14:12:00

0

對於2017年2月8日6時23分35秒+0000這種日期格式的,我用下面的格式:

SimpleDateFormat formatDate; 
formatDate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ZZZ"); 

它爲我工作。其他答案不適合我。