我从有效载荷中收到此DateTime:2016-09-18T11:00:00.000-04:00。
我想将其转换为UTC。我知道我只需要获取偏移量并根据它修改小时数,但是我找不到使用输入格式的语法来执行此操作。
预期成果:2016-09-18T15:00:00.000
答案 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作为您选择的格式,则两者都有效。