+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());
}
第一种方式输出:2021-01-19T09:27:33.789+07:00
第二种方式输出:2021-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="2017-03-15T15:23:11.855+07:00",输出Wed Mar 15 15:23:11 CST 2017,说明第一种方式拿到的时间就是+07:00这个时区的时间
第一种方式,如果dateStr="2017-03-15T15:23:11.855+07:00",输出Wed Mar 15 16:23:11 CST 2017,说明第二种方式拿到的时间转换成当前服务器时区的时间