如何在Java中将GMT偏移的DateTime转换为UTC?

时间:2016-10-25 21:01:02

标签: java datetime utc

我从有效载荷中收到此DateTime:2016-09-18T11:00:00.000-04:00。

我想将其转换为UTC。我知道我只需要获取偏移量并根据它修改小时数,但是我找不到使用输入格式的语法来执行此操作。

预期成果:2016-09-18T15:00:00.000

2 个答案:

答案 0 :(得分:1)

您的输入是ISO格式,因此使用Java 8+它非常简单:

OffsetDateTime dateTime = OffsetDateTime.parse("2016-09-18T11:00:00.000-04:00");
OffsetDateTime utc = dateTime.withOffsetSameInstant(ZoneOffset.UTC); //2016-09-18T15:00Z

答案 1 :(得分:0)

我能够使用SimpleDateFormat执行此操作:

public static void main(String[] args) throws Exception {
    SimpleDateFormat iso_8601_format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");

    Date date = iso_8601_format.parse("2016-09-18T11:00:00.000-04:00");

    iso_8601_format.setTimeZone(TimeZone.getTimeZone("UTC"));

    System.out.println(iso_8601_format.format(date));
}

这导致以下输出: 2016-09-18T15:00:00.000Z

文字' Z'最后表示" Z" ero offset或UTC。如果需要,您可以手动将其删除,但如果您使用ISO 8601作为您选择的格式,则两者都有效。