+07:00表示与标准时间的偏移量
/*** 第一种方式 获取指定时区的这种格式* 获取泰国时间* 格式:1998-07-16T19:20:30.450+07:00** @return*/public static String getBangkokTime() {Instant instant = Instant.now();OffsetDateTime time = instant.atOffset(ZoneOffset.ofHours(7));return time.toString();}/*** 第二种方式 获取当前时区的这种格式* @return*/public static String dateFormat() {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");return sdf.format(new Date());}
第一种方式输出:-01-19T09:27:33.789+07:00
第二种方式输出:-01-19T10:27:33.792+08:00
同理,如何将yyyy-MM-dd'T'HH:mm:ss.SSS+07:00格式转为date类型
/*** 第一种方式,指定时区偏移量,并且时间字符串包含时区偏移量的具体值,例如+07:00* yyyy-MM-dd'T'HH:mm:ss.SSS+07:00* @param dateStr* @return* @throws Exception*/public static Date strToDate(String dateStr) throws Exception {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS+07:00");Date date = sdf.parse(dateStr);System.out.println(date);return date;}/*** 第二种方式,默认服务器时区,并且时间字符串可以是任意时区的字符串* @param dateStr* @return* @throws Exception*/public static Date strToDate(String dateStr) throws Exception {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");Date date = sdf.parse(dateStr);System.out.println(date);return date;}
第一种方式,如果dateStr="-03-15T15:23:11.855+07:00",输出Wed Mar 1515:23:11 CST ,说明第一种方式拿到的时间就是+07:00这个时区的时间
第一种方式,如果dateStr="-03-15T15:23:11.855+07:00",输出Wed Mar 1516:23:11 CST ,说明第二种方式拿到的时间转换成当前服务器时区的时间