在我的應用程序中,我從一個代表UTC格式時間的文件中讀取一個String值,該文件由.net 2015生成。在我的Java應用程序中,我讀取了該值並需要將其轉換爲然後將其轉換回UTC時間。這是我在Java代碼中的時間轉換爲長期價值:在Java和.net中使用UTC時間?
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = df.parse(timeString);
long timeLong = date.getTime();
並將其轉換回UTC格式:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = new Date(timeLong);
newTimeStamp = df.format(date);
不過,最終的UTC時間,我得到的是不一樣的原始時間我從文件中讀取。它差不多有兩個小時。我想知道是否是因爲Java和.Net中時間轉換的實現方式不同。
我原來的時間是2015-12-22T21:00:11.8701036Z
,我做這個轉換後得到的最後時間是2015-12-22T23:25:12.000036Z
。
p.s.我正在使用Java 1.7。
可能重複的[SimpleDateFormat解析失去時區](http://stackoverflow.com/questions/18122608/simpledateformat-parse-loses-timezone) – childofsoong
我標記了你的重複http://stackoverflow.com/questions/18122608/simpledateformat-parse-loses-timezone - 我意識到當我做了你的代碼之後,我離開了8個小時(離開UTC的小時數)。我認爲你在UTC +/- 2? – childofsoong
「Date」類的主要缺陷之一是,除非從「日曆」實例創建它,否則它本質上不是時區知曉的。這就是爲什麼Java 8有一個新的Date API的原因之一,包括'ZonedDateTime'類。 – Powerlord