天天看点

String时间类型转换为ZonedDateTime时间类型

搞了一个早上,不知道怎么弄这个东西。最后发现没有必要将ZonedDateTime写的很全,可以精简的封装

public static ZonedDateTime changeShanghaiToUTC(String beijingDateTimeStr){
DateTimeFormatter beijingFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.of("Asia/Shanghai"));
if(StringUtils.isBlank(beijingDateTimeStr)){
return null;
}
ZonedDateTime beijingDateTime = ZonedDateTime.parse(beijingDateTimeStr, beijingFormatter);
return beijingDateTime.withZoneSameInstant(ZoneId.of("UTC"));
}
           

关键点:

  1. DateTimeFormatter后添加withZone这个值,String转换为ZonedDateTime中这个值是必须要的,否则转换为string时会报错。
  2. 使用DateTimeFormatter中的parse方法解析string为DateTimematter格式