2012-09-03 29 views
2

我試圖導入代表格式的日期給定的字符串初始化Date對象中的java:從給定字符串表示

2007-03-12T00:00:00.000+01:00 

我們創建一個新的Date對象,我使用喬達庫使用:

DateTime date = new DateTime(year, month, day, hour, minute, second); 

但是,我要確保這裏兩件事情:

  • 如何在這個日期時間範圍內處理GTM +1?
  • 反正有, 我沒有解析這個字符串,並且Date對象可以是 用這個字符串直接初始化?

回答

6
DateTime date = DateTime.parse("2007-03-12T00:00:00.000+01:00"); 

正如在其他的答案被提及,該偏移被認爲與根據文檔的字符串的其餘部分一起被解析。

+0

謝謝,這很簡單,但我從來沒有嘗試假設它不會工作。 – Johnydep

-1

無論您的問題可以通過閱讀documentation該類

時區是由類處理來回答。查找採用時區參數的constructor

是的,你可以使用字符串創建DateTime對象。 DateTime.parse(String)可以做到這一點。如果需要,還有另外的method可用於解析自定義日期格式。

+5

與其僅僅說「RTFM」,你可以爲給定的日期字符串提供一個例子 - 如果沒有其他理由,而不是幫助未來的訪問者絆倒這個答案。 – Crollster

+0

@Sean,我看過格式化程序,但我不明白我如何在格式化程序中使用時區?另外,如果我有這個字母T,那麼我將如何使用這個解析?你能給我一些想法嗎? – Johnydep

+0

我同意@Crollster ... – javamonkey79

2

您可以分析使用SimpleDateFormat該日期字符串,然後傳遞日期爲喬達類:

String dateStr = "2007-03-12T00:00:00.000+01:00"; 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
Date date = sdf.parse(dateStr.replaceAll(":(?=..$)", "")); // remove last colon 

請注意,您必須刪除最後一個冒號,因此偏移量是一個RFC 822 time zone+0100,我沒有使用String.replaceAll()