如何将时区(2019-01-31T05:20:18.728 + 02:00)转换为时间

时间:2019-01-31 05:25:48

标签: java datetime

我尝试将带有时区的时间转换为时间,但是没有成功,请您帮忙提供建议吗?

带时区的时间:2019-01-31T05:20:18.728 + 02:00 (您可能会注意到,时间+02:00结束时有一个偏移量。而不是05 :20:18.728 + 02:00,我想打印出07:20:18,表示05:20:18 +时间偏移)。

显示时间:07:20:18

...
LocalDateTime ldt = LocalDateTime.now(); //my local time is set to GMT
ZoneOffset offset1 = ZoneOffset.ofHours( (offset%24) );
OffsetDateTime odt = ldt.atOffset( offset1);
System.out.println(odt);
...

我的问题已更新。

非常感谢, 常春藤

1 个答案:

答案 0 :(得分:1)

您可以使用Java-8 DateTimeFormatter类来格式化LocalTime实例,以仅获取时间部分。

public static void main(String[] args) {
        LocalTime localTime = LocalTime.now(ZoneId.of("GMT"));
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
        System.out.println(localTime.format(dtf));

        //From an ISO date string
        LocalTime parseTime = LocalTime.from(DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse( "2019-01-31T05:20:18.728+02:00"));
        System.out.println(parseTime.format(dtf));
}

输出:

05:47:57
05:20:72