首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 時區處理:顯示洛杉磯與上海當前時間

     編輯:Java 相關知識

核心程式碼


import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;

public class TimeZoneDemo {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Calendar cal = Calendar.getInstance(); // 當前預設時區時間

        // 洛杉磯時間 (America/Los_Angeles)
        sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
        System.out.println("Los_Angeles: " + sdf.format(cal.getTime()));

        // 上海時間 (Asia/Shanghai)
        sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
        System.out.println("Shanghai:    " + sdf.format(cal.getTime()));
    }
}

執行範例輸出


Los_Angeles: 2024/01/15 03:45:22
Shanghai:    2024/01/15 19:45:22

關鍵點解析

類別說明
Calendar.getInstance()取得預設時區(JVM 啟動參數 user.timezone 或作業系統設定)的當前瞬間
SimpleDateFormat.setTimeZone()改變格式化輸出的時區,不改變 Calendar 內部瞬間
TimeZone.getTimeZone(id)IANA 時區資料庫 ID,如 America/Los_Angeles、Asia/Shanghai、UTC

現代替代方案 (Java 8+)


import java.time.*;
import java.time.format.DateTimeFormatter;

public class ModernTimeZoneDemo {
    public static void main(String[] args) {
        Instant now = Instant.now(); // UTC 瞬間
        DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");

        ZonedDateTime la = now.atZone(ZoneId.of("America/Los_Angeles"));
        ZonedDateTime sh = now.atZone(ZoneId.of("Asia/Shanghai"));

        System.out.println("Los_Angeles: " + la.format(fmt));
        System.out.println("Shanghai:    " + sh.format(fmt));
    }
}
  • java.time 為不可變、線程安全、API 更清晰。
  • ZoneId 自動處理夏令時間規則(IANA 資料庫)。
  • 舊代碼維護可用 DateTimeFormatter.ofPattern 替代 SimpleDateFormat。

常見時區 ID 對照


UTC                    // 協調世界時
America/Los_Angeles    // 洛杉磯 (PST/PDT)
America/New_York       // 紐約 (EST/EDT)
Europe/London          // 倫敦 (GMT/BST)
Asia/Shanghai          // 上海/北京 (CST, 無夏令時間)
Asia/Tokyo             // 東京 (JST)
Australia/Sydney       // 雪梨 (AEST/AEDT)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved