下面是我輸入的日期字符串格式:與GMT導致小時變化的時區差異?
2025-08-08T15%3A41%3A46
我要在上面的格式字符串轉換日期如下圖所示:
Fri Aug 08 15:41:46 GMT-07:00 2025
而且我得到了下面的代碼:
SimpleDateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US);
String decodedDate = URLDecoder.decode("2025-08-08T15%3A41%3A46", "UTF-8");
Date date = dateParser.parse(decodedDate);
//Decode the given date and convert to Date object
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy", Locale.US);
sdf.setTimeZone(TimeZone.getTimeZone("GMT-07:00"));
System.out.println(sdf.format(date));
這就是它在控制檯上打印的內容。我不知道爲什麼它打印出不同的小時值,與我在上面輸出的結果相比較。它應該打印出15
但它正在打印03
。
Fri Aug 08 03:41:46 GMT-07:00 2025
我不確定什麼原因導致小時由於與GMT的時區差異而發生變化?
我仍在使用java 7,無法切換到Java8。考慮到這一點,那麼最好的方法是什麼,並獲得我需要的相同輸出? – john
@david在[*** ThreeTen-Backport ***](http://www.threeten.org/threetenbp/)項目中,大部分java.time功能都被移植到Java 6和Java 7中。由構建java.time和Joda-Time的相同團隊生成。很值得爲你的項目添加一個庫的麻煩。遺留類是不幸的。 –