java根據時區轉換獲取時間的方法
一、利用hutool中的DateUtil.convertTimeZone()方法
public static void main(String[] args) { // 假設這是從MySQL獲取的UTC時間字符串 String utcTimeStr = "2024-09-30T16:00:00Z"; try { // 解析UTC時間字符串 DateTime parsedDateTime = DateUtil.parse(utcTimeStr); // 轉換為指定時區時間 DateTime shanghaiDateTime = DateUtil.convertTimeZone(parsedDateTime, ZoneId.of("Asia/Shanghai")); // 轉換為GMT時間 DateTime gmtDateTime = DateUtil.convertTimeZone(parsedDateTime, ZoneId.of("Etc/GMT")); // 格式化輸出 System.out.println("格式化輸出"+shanghaiDateTime); // 輸出GMT時間 System.out.println("輸出GMT時間"+gmtDateTime); // 格式化輸出 String format1 = DateUtil.format(shanghaiDateTime, "yyyy-MM-dd HH:mm:ss"); String format2 = DateUtil.format(gmtDateTime, "yyyy-MM-dd HH:mm:ss"); // 輸出轉換后的時間字符串 System.out.println("格式化[Asia/Shanghai]輸出"+format1); // 輸出GMT時間字符串 System.out.println("格式化[Etc/GMT]輸出"+format2); } catch (Exception e) { System.err.println("時間解析或轉換失敗: " + e.getMessage()); } }
控制臺輸出如下:
格式化輸出2024-10-01 00:00:00 輸出GMT時間2024-09-30 16:00:00 格式化[Asia/Shanghai]輸出2024-10-01 00:00:00 格式化[Etc/GMT]輸出2024-09-30 16:00:00
二、利用SimpleDateFormat格式化處理
/** * 時間字符串轉換為指定時區時間字符串 * @param dateStr 時間字符串 * @param zoneId 時區ID * @return 指定時區時間字符串 */ private static String timeZoneConvert(String dateStr, String zoneId) { DateTime parse = DateUtil.parse(dateStr); log.info("原始時間:{}", parse); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); // 設置時區:例如:Asia/Shanghai sdf.setTimeZone(TimeZone.getTimeZone(zoneId)); String str = sdf.format(parse); log.info("轉換后時間:{}", str); return str; } public static void main(String[] args) { // UTC時間字符串轉化為指定時區時間字符串 String dateStr = "2024-09-30T16:00:00Z"; // 時區ID String zoneId = "GMT+8"; // 時間轉換處理 String dateFormatStr = timeZoneConvert(dateStr, zoneId); // 輸出轉換后的時間字符串 System.out.println("原始時間字符串:" + dateStr); // 輸出轉換后的時間字符串 System.out.println("轉換后的時間字符串:" + dateFormatStr); }
控制臺輸出如下:
0:54:12.158 [main] INFO com.songwp.test.Test05 - 原始時間:2024-09-30 16:00:00 10:54:12.161 [main] INFO com.songwp.test.Test05 - 轉換后時間:2024-10-01 00:00:00 原始時間字符串:2024-09-30T16:00:00Z 轉換后的時間字符串:2024-10-01 00:00:00
古今成大事者,不唯有超世之才,必有堅韌不拔之志!

浙公網安備 33010602011771號