2009-10-12 55 views
3

我想解析一些XML文件中寫入的時間戳。大多數時間的時間戳是類似於2009-07-22-07:00但有些時候我發現他們有點像2009-07-22Z2009-07-22z。請幫助我解釋這些Z以及如何解析它們。我這些z或Z與時區有關。任何解決方法就像典型的時間戳一樣解析它們?如何解讀這些時間戳?

回答

7

爲了增加FVU的回答是:Java的遺憾的是沒有任何內置的方法來解析(或格式ISO8601日期和時間格式,更不幸的是它不是(容易)能夠解析ISO8601日期與java.text.SimpleDateFormat

著名和流行Joda Time庫確實有ISO8601日期和時間的良好支持

編輯:由於Java 5,有類標準的API在解析和日期和時間格式標準格式常用於XML文檔。解析日期:

import java.util.Calendar; 
import java.util.Date; 
import javax.xml.datatype.DatatypeFactory; 
import javax.xml.datatype.XMLGregorianCalendar; 

// ... 

String dateString = "..."; // wherever you get this from 
XMLGregorianCalendar xcal = DatatypeFactory.newInstance().newXMLGregorianCalendar(dateString); 

Calendar cal = xcal.toGregorianCalendar(); 
Date date = cal.getTime(); 

同樣也有方法將日期格式化爲字符串。 有關詳細信息,請參閱這些類的API文檔。

+1

他說什麼。只需使用喬達時間,您將在幾個小時內感謝上述海報。 – Gaurav

+0

感謝您的詳細解決方案 – Ram

+0

它說「非靜態方法newXMLGregorianCalendar(java.lang.String)不能從靜態上下文中引用」。對不起,我是Java的新手。這裏的工作是什麼? – Ram

5

Z是指祖魯語。你是對的,它確實代表了時區 - 特別是UTC

+0

非常感謝你的快速回答 – Ram

5

你是對的。結尾字符是指時區。

Z指的是「祖魯」時區,它只是UTC(或GMT)時區的簡寫。

您也可能會看到尾隨+ X或-X。這些參考時間戳的GMT偏移量。例如2002-05-30+06:00表示時間爲GMT + 6小時零分鐘。

1

XML使用ISO8601時間格式,因此標準是第一個在XML中查找所有時間相關事物的地方。

+1

幾個挑剔。 1)它是基於ISO-8601指定日期的XML Schema ...基本XML規範(以及DOM和解析器)沒有任何數據類型的概念。 2)XML Schema中的時間和持續時間類型僅基於ISO-8601。如果您詳細閱讀XML Schema規範,您會發現存在細微差別。 –

+1

@Stephen - 確實,你是對的。 http://www.w3.org/TR/xmlschema-2/#isoformats瞭解這些偏差的概況。 – fvu