将UTC转换为EST时区

时间:2019-04-03 14:50:27

标签: java

我必须将UTC时间戳数据转换为EST时区。下面的代码在时区差为-5Hrs时工作正常,但是当我给UTC的时间像-2018-04-15T21:27:31.000Z时,它输出为2018-04-15 16:27:31 -0500,这是不正确的。输出应为2018-04-15 17:27:31 -0400。它总是减去-5hrs

DateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.000'Z'");
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
DateFormat estFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
estFormat.setTimeZone(TimeZone.getTimeZone("EST"));

try {
    String date1 = estFormat.format(utcFormat.parse("2018-04-15T21:27:31.000Z"));

    System.out.println("est time : "+date1);

} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

1 个答案:

答案 0 :(得分:1)

您似乎希望时区速记名为“ EST”遵守夏时制更改规则。没有。 “ EST”是时区的名称,该时区是一年中的任意时间。

要获得符合夏令时规则的时区定义,最好使用使用这些时区的主要城市的名称。

根据您的情况,尝试“美国/纽约”