前言
- jdk1.8
- 当前时区
带时区格式化时间
为SimpleDateFormat对象指定时区后,再执行格式化。
Calendar cal = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
ZoneId zoneId = ZoneId.ofOffset("GMT", ZoneOffset.ofHours(9));
TimeZone timeZone = TimeZone.getTimeZone(zoneId);
df.setTimeZone(timeZone);
System.out.println(df.format(cal.getTime()));
- 将时间格式化成东九区的时间
示例
package com.example.demo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.Calendar;
import java.util.TimeZone;
public class TestMain {
public static void main(String[] args) throws ParseException {
Calendar cal = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
TimeZone timeZone;
ZoneId zoneId;
System.out.println("user.timezone = " + System.getProperty("user.timezone"));
zoneId = ZoneId.systemDefault();
System.out.println("zoneId = " + zoneId);
timeZone = TimeZone.getTimeZone(zoneId);
df.setTimeZone(timeZone);
System.out.println(df.format(cal.getTime()));
for (int i=0;i<=12;i++) {
zoneId = ZoneId.ofOffset("GMT", ZoneOffset.ofHours(i));
System.out.println("zoneId = " + zoneId);
timeZone = TimeZone.getTimeZone(zoneId);
df.setTimeZone(timeZone);
System.out.println(df.format(cal.getTime()));
}
for (int i=-0;i>=-12;i--) {
zoneId = ZoneId.ofOffset("GMT", ZoneOffset.ofHours(i));
System.out.println("zoneId = " + zoneId);
timeZone = TimeZone.getTimeZone(zoneId);
df.setTimeZone(timeZone);
System.out.println(df.format(cal.getTime()));
}
}
}
输出
user.timezone = Asia/Shanghai
zoneId = Asia/Shanghai
2021-09-26T18:20:09+08:00
zoneId = GMT
2021-09-26T10:20:09Z
zoneId = GMT+01:00
2021-09-26T11:20:09+01:00
zoneId = GMT+02:00
2021-09-26T12:20:09+02:00
zoneId = GMT+03:00
2021-09-26T13:20:09+03:00
zoneId = GMT+04:00
2021-09-26T14:20:09+04:00
zoneId = GMT+05:00
2021-09-26T15:20:09+05:00
zoneId = GMT+06:00
2021-09-26T16:20:09+06:00
zoneId = GMT+07:00
2021-09-26T17:20:09+07:00
zoneId = GMT+08:00
2021-09-26T18:20:09+08:00
zoneId = GMT+09:00
2021-09-26T19:20:09+09:00
zoneId = GMT+10:00
2021-09-26T20:20:09+10:00
zoneId = GMT+11:00
2021-09-26T21:20:09+11:00
zoneId = GMT+12:00
2021-09-26T22:20:09+12:00
zoneId = GMT
2021-09-26T10:20:09Z
zoneId = GMT-01:00
2021-09-26T09:20:09-01:00
zoneId = GMT-02:00
2021-09-26T08:20:09-02:00
zoneId = GMT-03:00
2021-09-26T07:20:09-03:00
zoneId = GMT-04:00
2021-09-26T06:20:09-04:00
zoneId = GMT-05:00
2021-09-26T05:20:09-05:00
zoneId = GMT-06:00
2021-09-26T04:20:09-06:00
zoneId = GMT-07:00
2021-09-26T03:20:09-07:00
zoneId = GMT-08:00
2021-09-26T02:20:09-08:00
zoneId = GMT-09:00
2021-09-26T01:20:09-09:00
zoneId = GMT-10:00
2021-09-26T00:20:09-10:00
zoneId = GMT-11:00
2021-09-25T23:20:09-11:00
zoneId = GMT-12:00
2021-09-25T22:20:09-12:00
zoneId = Asia/Shanghai
是系统默认时区。zoneId = Asia/Shanghai
也就是东八区,其时间与zoneId = GMT+08:00
一样。zoneId = GMT+00:00
与zoneId = GMT+00:00
是同一个时区,因此时间一样。zoneId = GMT+12:00
与zoneId = GMT-12:00
是国际日期变更线所在,因此时间相差24小时。