Java的XMLGregorianCalendar和Date及String相互轉換

在java中,會遇到這樣的字符傳"2013-05-31T14:58:31.609+08:00"來表示時間的,也會遇到這樣的字符串"2013-05-31 14:58:31"。後者非常創建,屬於普通時間類型如java.util.Date類,前者帶有了時區及精確到毫秒,屬於日曆類型,如javax.xml.datatype.XMLGregorianCalendar類。

如何輸出日曆格式的字符串?
將當前時間輸出字符串爲帶時區的日曆格式的代碼如下:
獲取當前時間,再轉換爲XMLGregorianCalendar類,再將XMLGregorianCalendar類的對象toString輸出,格式就是日曆格式。

GregorianCalendar gcal =new GregorianCalendar();
XMLGregorianCalendar xgcal= DatatypeFactory.newInstance().newXMLGregorianCalendar(gcal);
System.out.println("xgcal="+xgcal.toString());

輸出結果爲
xgcal=2013-05-31T15:08:06.843+08:00

換一種方式取當前時間:

Date date=new Date();
gcal.setTime(date);
xgcal= DatatypeFactory.newInstance().newXMLGregorianCalendar(gcal);
System.out.println("xgcal="+xgcal.toString());

輸出結果爲
xgcal=2013-05-31T15:09:49.312+08:00


如何將時間類對象輸出爲中文習慣格式的字符串
使用SimpleDateFormat的format和parse方法進行轉換。

SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

日曆類的對象,先轉換成GregorianCalendar,再獲取時間,最後使用format方法將時間轉換爲定義好格式的字符串。
date=xgcal.toGregorianCalendar().getTime();
String dateTimeString=simpleDateFormat.format(date);
System.out.println("dateTimeString="+dateTimeString);

時間類的對象,就直接使用format方法轉換
dateTimeString=simpleDateFormat.format(date);
System.out.println("dateTimeString="+dateTimeString);



如何將固定格式的字符串轉成時間類對象
使用SimpleDateFormat的parse方法,將字符串轉成Date類的對象。

Date date2=simpleDateFormat.parse("2013-06-22 00:00:00");

dateTimeString=simpleDateFormat.format(date2);
System.out.println("dateTimeString="+dateTimeString);

再將Date類的對象賦值到GregorianCalendar類的對象上去。
gcal.setTime(date2);
xgcal= DatatypeFactory.newInstance().newXMLGregorianCalendar(gcal);
System.out.println("xgcal="+xgcal.toString());


最後,總體輸出的結果如下:
xgcal=2013-05-31T15:21:34.062+08:00
xgcal=2013-05-31T15:21:34.062+08:00
dateTimeString=2013-05-31 15:21:34
dateTimeString=2013-05-31 15:21:34
dateTimeString=2013-06-22 00:00:00
xgcal=2013-06-22T00:00:00.000+08:00
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章