最近困扰于Java的时区切换。
想要创建默认时区为GMT+1的, 6.30的时间;
原代码:
SimpleDateFormat format_HHmm = new SimpleDateFormat(DATE_FORMAT_TYPE_HHmm);
String timezone = "GMT+1"; Calendar returnCalendar = new GregorianCalendar(); TimeZone.setDefault(TimeZone.getTimeZone(timezone)); returnCalendar.setTimeZone(TimeZone.getTimeZone(timezone)); returnCalendar.setTime(format_HHmm.parse("0630")); System.out.println(format_HHmm.format(returnCalendar.getTime()));
但是这样打印出来的时间并不是“GMT+1”时区的时间。
后来将 format_HHmm 的声明,放在了 TimeZone.setDefault(TimeZone.getTimeZone(timezone)); 这一行的后面,就可以了。
个人猜测,声明SimpleDateFormat类时,会根据TimeZone进行时区设置