簡體   English   中英

格式化特定日期/時間格式時出現問題

[英]Having issues formatting a specific Date/Time format

我在格式化以下日期/時間時出現問題:

2013-01-10T17:04:24.3787635-02:00

現在,我明白2013-01-10是日期(顯然)。

17:04:24.3787635可能是時間,雖然我不知道點后面的數字是什么意思。

-02:00我認為這是時區(GMT)。

我怎樣才能在java中解析這個? (也許使用JodaTime)。

嘗試使用此模式:

"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"

哪個可以用這種格式解析日期:

2001-07-04T12:08:56.235-07:00

雖然,源字符串中的3787635很麻煩。 它看起來不像毫秒。

有關模式的更多詳細信息,請查看java.text.SimpleDateFormat

您還可以嘗試返回java.util.Calendar對象的DatatypeConverter.parseDateTime

DatatypeConverter.parseDateTime("2013-01-10T17:04:24.3787635-02:00").getTime()

上述語句執行時沒有任何錯誤。

您可以使用JodaTime來解析此日期:

String time = "2013-01-10T17:04:24.3787635-02:00";
DateTimeFormatter df = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ");
DateTime dateTime = df.parseDateTime(time);

點( . )后面的數字是JodaTime's DateTimeFormat中 S表示的秒數。 Z表示時區模式。

時間字符串的格式為ISO8601格式。 JodaTime類ISODateTimeFormat將直接支持該格式。 但是,您將失去超過毫秒的准確度。

String time = "2013-01-10T17:04:24.3787635-02:00";
DateTime dateTime = ISODateTimeFormat.dateTime().parseDateTime(time);

只能使用javax.xml.XMLGregorianCalendar正確解析此格式。 您不能使用SimpleDateFormat,因為它接受SSS作為毫秒數,而不是一秒的小數部分。

    String s = "2013-01-10T17:04:24.3787635-02:00";
    DatatypeFactory dtf = DatatypeFactory.newInstance();
    Date date = dtf.newXMLGregorianCalendar(s).toGregorianCalendar().getTime();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM