2012-07-23 54 views
1

DatatypeConverter.parseDate在輸出鑑於這種一小段代碼錯誤的日期

// import javax.xml.bind.DatatypeConverter; 

Date date = DatatypeConverter.parseDate("2012-07-12-04:30").getTime(); 
System.out.println(date); 
Date date2 = DatatypeConverter.parseDate("2012-07-12+00:00").getTime(); 
System.out.println(date2); 

輸出是:

Thu Jul 12 00:00:00 VET 2012 
Wed Jul 11 19:30:00 VET 2012 

爲什麼轉換日期4:30落後給定的日期?我卡住了。

回答

0

「2012-07-12 + 00:00」 - 它是2012年7月12日00:00 UTC時區或2012年7月11日19:30在委內瑞拉TimeZone。

你得到的是時間字符串表示在您的本地時區,但無論如何,Date類的timeZone綁定到UTC

+0

日期有沒有時區的。 DatatypeConverter選擇將字符串解釋爲UTC時間,這是原因。 – 2012-07-23 13:50:58

+0

是的,你是對的。我可能以錯誤的方式提到了時區。日期包含自1970年1月1日00:00 UTC以來的毫秒數,但實際上它沒有時區。 – leokom 2012-07-24 06:10:23