冬夏令时
最近遇到一个需求,需要把数据库存的UTC时间转为PST时间。由于UTC没有冬夏令时,如果直接用sql查询时候 -8小时,这样就不是冬夏令时了。PST是太平洋标准时间(西八区区时),与北京时间(东八区区时)时差16个小时(冬令时)或15个小时(夏令时)。换句话说:夏令时UTC-7,冬令时UTC-8。使用java8 的api进行时区切换时候就可以自动算上冬夏令时的偏移量。
时区转换
ZoneId newZone = ZoneId.of("America/Los_Angeles");
DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss");
String timeString = "2022-08-29 01:46:12";
LocalDateTime parse = LocalDateTime.parse(timeString,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//原本数据库存的时间是UTC时间,
ZonedDateTime zonedDateTime1 = ZonedDateTime.of(parse, ZoneId.of("UTC"));
parse = LocalDateTime.ofInstant(zonedDateTime1.toInstant(),newZone);
//parse : 08/28/2022 18:46:12, UTC-7
timeString = dtf2.format(parse);