将Java 6中的GMT更改为EST时间

时间:2020-06-04 06:18:01

标签: java

考虑到夏令时,我正在尝试将GMT时区从其他服务器转换为EST,以显示正确的日期,但无法执行。

GMT时间格式以String的形式出现在json "yyyy-MM-dd 'T' HH:mm:ss 'Z'"中。对于这种格式,我们将时区设置为EST,但未获得正确的结果。

示例-日期以"2020-06-02T03:53:57Z"开头,而EST创建时的正确日期是"2020-06-01T11:53:57Z"

1 个答案:

答案 0 :(得分:0)

要在两个显式时区之间进行转换,请在SimpleDateFormat对象上指定用于解析和重新格式化日期字符串的那些时区。

String input = "2020-06-02T03:53:57Z";

SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
inputFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = inputFormat.parse(input);

SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
outputFormat.setTimeZone(TimeZone.getTimeZone("America/New_York"));
System.out.println(outputFormat.format(date));

输出

2020-06-01 23:53:57 EDT

如您所见,在6月,时区是EDT,而不是EST,并且肯定不是Z,也就是UTC