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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章