時區和 java.util.Date

java.util.Date 物件沒有時區概念。

  • 無法為日期設定時區
  • 無法更改 Date 物件的時區
  • 使用 new Date() 預設建構函式建立的 Date 物件將使用系統預設時區中的當前時間進行初始化

但是,可以使用例如 java.text.SimpleDateFormat 顯示由 Date 物件在不同時區描述的時間點表示的日期:

Date date = new Date();
//print default time zone
System.out.println(TimeZone.getDefault().getDisplayName());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //note: time zone not in format!
//print date in the original time zone
System.out.println(sdf.format(date));
//current time in London
sdf.setTimeZone(TimeZone.getTimeZone("Europe/London"));
System.out.println(sdf.format(date));

輸出:

Central European Time
2016-07-21 22:50:56
2016-07-21 21:50:56