首页 > 解决方案 > 如何将带时区的时间 (2019-01-31T05:20:18.728+02:00) 转换为时间

问题描述

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

时区时间: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);
...

我的问题已更新。

非常感谢,常春藤

标签: javadatetime

解决方案


您可以使用 Java-8DateTimeFormatter类来格式化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

推荐阅读