使用适当的时区转换 ISO 日期格式的字符串

问题描述 投票:0回答:1

我正在尝试将 ISO 格式(带 tz)2020-11-22T10:02:13.501-04:00 的日期值更新为 11/11/2020 10:02 AM EST 格式。

我正在使用下面的代码,但如何获取时区,因为 (-04:00) 是 EST。

DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy HH:mm aa zzz");
Date dateVal = df2.parse(dateStr);
String formatted = sdf.format(dateVal);`

此格式 dd/MMM/yyyy HH:mm aa zzz 将默认为服务器时区,但我想要日期中的时区。

java date timezone-offset
1个回答
0
投票

“...这种格式 dd/MMM/yyyy HH:mm aa zzz 将默认为服务器时区,但我想要日期中的时区。”

不要在解析中包含 timezone,它只是一个符号。

Date dateVal = df2.parse(dateStr.substring(0, dateStr.lastIndexOf('-')));

并且,在打印该值时,JVM 将显示系统的默认时区,因此请手动附加时区文本。

SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy HH:mm aa ");
Date dateVal = df2.parse(dateStr.substring(0, dateStr.lastIndexOf('-')));
String formatted = sdf.format(dateVal) + "EST";
© www.soinside.com 2019 - 2024. All rights reserved.