2017-02-17 244 views
1

我正在開發一個java樣本,其中日期是字符串,如 - 2016-07-19T16:54:03.000 + 05:30。 我想將其轉換爲DateTime對象。如何在java中執行此操作? 我曾嘗試這個代碼 -從字符串獲取DateTime

DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS+Z").parseDateTime("2016-07-19T16:54:03.000+05:30") 

它給java.lang.IllegalArgumentException異常:無效的格式: 「2016-07-19T16:54:03.000 + 05:30」 在 「05:30」格式有誤例外。

+1

你到目前爲止試過的東西? –

+1

google「java string to date」? :D – xander

+0

@ shash678給出異常 - java.lang.IllegalArgumentException:非法模式組件:X –

回答

1

您需要使用ZZ而不僅僅是時區信息的Z.

DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ").parseDateTime("2016-07-19T16:54:03.000+05:30") 

Javadoc摘自:

模式字母計數確定的格式。

防區:'Z'輸出偏移量不帶冒號,'ZZ'使用冒號輸出偏移量,'ZZZ'或更多輸出防區ID。

+0

java.lang.IllegalArgumentException:格式無效:「2016-07-19T16:54:03.000 + 05:30」在「05:30」異常 –

+1

@paritaporwal異常,對不起,模式中出現「+」符號不應該在那裏。該行應該是DateTimeFormat.forPattern(「yyyy-MM-dd'T'HH:mm:ss.SSSZZ」)。parseDateTime(「2016-07-19T16:54:03.000 + 05:30」)。編輯答案以反映這一變化。 – DB5

+0

非常感謝......它的工作原理...... –

0

您可以嘗試java.text.DateFormat中

String DEFAULT_DATE_PARSE_PATTERN="dd.MM.yyyy"; 
DateFormat format = new SimpleDateFormat(DEFAULT_DATE_PARSE_PATTERN); 
Date result = format.parse(your_value); 
+0

它只解析日期 - 星期二7月19 00:00:00 IST 2016.我也想解析時間..... –

1

你可以使用SimpleDateFormat

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

class Main { 
    public static void main(String[] args) { 
    try { 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX"); 
     Date parsed = format.parse("2016-07-19T16:54:03.000+05:30"); 
     System.out.println(parsed); 
    } catch (ParseException e){ 
     e.printStackTrace(); 
    } 
    } 
} 

輸出:

Tue Jul 19 11:54:03 UTC 2016 

試試吧here!

+0

它將我的時間從16:54:03更改爲UTC時間11:54:03。我不想要。我需要時間。 –

+1

那麼你需要用時區和任何你想要的格式來設置它,我想這只是一個例子,如何解析它,而不是爲你的輸出格式化它。因爲你沒有說與你約會的日期。 – xander