[英]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.