java xml date_W3C XML 模式时间数据类型与java Date进行转换
W3C XML 模式時間數(shù)據(jù)格式:
"2014-11-17T 09:40:25" 或者 “2014-11-17T 09:40:25+08:00”
要想把以上格式的時間轉(zhuǎn)換為能被java所使用個格式有以下3種辦法:
(1)、jdk中有這么一個類XMLGregorianCalendar,使用XMLGregorianCalendar類中的toGreGregorianCalendar().getTimeInMillis()方法,返回TimesTamp對象。
用法:
Timestamp timestamp = new Timestamp(xmlDate.toGregorianCalendar().getTimeInMillis());
拿到了Timestamp 對象,大家應(yīng)該都知道怎么做了吧!可以用SimpleDateFormat()?想要轉(zhuǎn)成啥樣都行。不
過,SimpleDateFormat() 也正是我要說的第二種方法。
注釋:XMLGregorianCalendar類是jdk1.5之后才有的類,但在jdk api的官方文檔中未提及此類,可以在其他官方文檔中看到粗略的說明,不保證在下一版本的jdk中會保留此類。
(2)、SimpleDateFormat()
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.CHINESE);
format.setTimeZone(TimeZone.getTimeZone("GMT"));//"GMT":格林尼治時間, "UTC":世界統(tǒng)一時間
Date parse = format.parse("2014-11-12T22:00:44.0000000Z");
//.0000000Z未標(biāo)明時區(qū),即默認(rèn)是GMT的時間,在打印的時候按照咱們東八區(qū),則是第二天的6點(diǎn).
System.out.println("parse: " + parse);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
Date d2 = sdf.parse("2014-11-05T22:30:56.183+0800");
System.out.println("d2: "+d2); // output Wed Sep 17 12:00:44 IST 2014
System.out.println(sdf.format(d2));
sdf.setTimeZone(TimeZone.getDefault());
System.out.println(sdf.format(d2));
注意:用System,out.prientln()打印Date的時候是按你本地時區(qū)時間來顯示
有人就會說了,既然可以直接用SimpleDateFormat()來轉(zhuǎn),為嘛要采用第一種呢,問題就在這兒,因?yàn)閟chame中的時間可能帶時區(qū),也可能不帶時區(qū),可是你要知道在你使用new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 的時候,你的模板格式是固定的。你如何知道對方傳來的是帶時區(qū)的還是不帶時區(qū)的呢?所以這種方式是存在很大的風(fēng)險的,但只要時間模式能固定,該方法還是可行的。不然,你要是不嫌麻煩,可以一個字符一個字符的去判斷和解析,主要判斷ss后面有沒有跟毫秒,毫秒后面有沒有跟時區(qū)。
(3)、使用JAXB,jaxb可以將xml轉(zhuǎn)換為java對象,其內(nèi)部機(jī)制能直接轉(zhuǎn)為你要的Date,只要你的對象中定義的時間屬性是DateTime類型即可。
希望我做的這些筆記能幫助大家盡快解決問題少走一些彎路!
xml中的時間轉(zhuǎn)換為Date類型:
javax.xml.bind.DatatypeConverter.parseDateTime(reqTime).getTime() ?//?reqTime是從Node中獲得的String類型時間
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的java xml date_W3C XML 模式时间数据类型与java Date进行转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: thinkpade470怎么u盘启动 T
- 下一篇: 怎么关闭u盘启动系统 如何停用U盘启动功