时区和 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