2 回答
TA贡献1828条经验 获得超6个赞
由于您的字符串包含偏移量并且没有时区,那么您想要什么? 更合适。ZonedDateTimeOffsetDateTime
DateTimeFormatter dtf = DateTimeFormatter.ofPattern(
"EEE MMM dd yyyy HH:mm:ss 'GMT'xx", Locale.ROOT);
String a = "Tue Apr 09 2019 12:59:51 GMT+0300";
System.out.println(OffsetDateTime.parse(a, dtf));
2019-04-09T12:59:51 + 03:00
时区是地球上的一个地方,包括该地点的UTC偏移量的历史和已知的未来变化。时区通常以地区/城市格式给出,例如亚洲/仰光。
编辑
我使用区日期时间,因为我在我的应用程序中使用时区。
我不确定你到底是什么意思。也许您已经提前决定了您使用的时区?例如:
ZoneId zone = ZoneId.of("Europe/Zaporozhye");
OffsetDateTime odt = OffsetDateTime.parse(a, dtf);
ZonedDateTime zdt = odt.atZoneSameInstant(zone);
System.out.println(zdt);
2019-04-09T12:59:51+03:00[欧洲/扎波罗热]
如果出于某种原因,您希望将GMT + 0300视为时区,即使它不是,我首先显示的解析也适用于:ZonedDateTime
System.out.println(ZonedDateTime.parse(a, dtf));
2019-04-09T12:59:51 + 03:00
添加回答
举报