Java 将UTC转换为EST时区

Java 将UTC转换为EST时区,java,Java,我必须将UTC时间戳数据转换为EST时区。当时区差为-5小时时,下面的代码工作正常,但当我给出UTC时间时,如-2018-04-15T21:27:31.000Z则输出为2018-04-15 16:27:31-0500,这是不正确的。输出应该是2018-04-15 17:27:31-0400。它总是减去-5小时 DateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.000'Z'"); utcFormat.setTime

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

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();
}

您似乎期望名为“EST”的时区速记遵守夏令时更改规则。没有。“EST”是一年中任何时间GMT-5时区的名称

要按预期获得遵守夏令时规则的时区定义,最好使用使用这些时区的主要城市的名称


在你的情况下,试试“美国/纽约”

你在考虑日光节约吗对不起,维尼,我没明白你的意思。我在上面的代码中设置了时区。EST将不考虑日光节约,而EDT应考虑日光节约21-5h为16。。。。接缝对我来说是正确的。刚刚检查过,EST为-5h。