时区格式不正确。
String fromDate = "2022-10-14T10:00:00+0300";
final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
Date date = dateFormat.parse(fromDate);
System.out.println(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").format(date));当我跑的时候我得到了我的本地区域
2022-10-14T12:30:00+0430发布于 2022-10-17 08:26:41
Java Date没有时区和偏移的概念,它实际上是从那个时代开始的一个瞬间,当您使用时区进行格式化时,它静默地使用默认的时区。您已经有了关于遗留API的答案,所以我将发布一个关于java.time的答案,这是一种现代的日期时间API,可以从java 8开始使用。
解析和格式化日期/时间是用DateTimeFormatter完成的。输入字符串只包含偏移量,不包含时区,为了保留此信息,需要将其解析为OffsetDateTime。
String fromDate = "2022-10-14T10:00:00+0300";
DateTimeFormatter parseFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ");
OffsetDateTime dateTime = OffsetDateTime.parse(fromDate, parseFormatter);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
System.out.println(outputFormatter.format(dateTime));
//prints - 2022-10-14T10:00:00.000+0300发布于 2022-10-17 07:34:01
` String fromDate = "2022-10-14T10:00:00+0300";
final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
Date date = dateFormat.parse(fromDate);
dateFormat.setTimeZone(TimeZone.getTimeZone("EAT"));
System.out.println(dateFormat.format(date));'https://stackoverflow.com/questions/74093494
复制相似问题