首页 > 解决方案 > 具有不同偏移量的 OffsetDateTime 与 UTC (Zulu) 的 OffsetDateTime

问题描述

我在我的数据库中保存了不同偏移量的值,例如

`2018-03-26T03:00:00+03:00`
`2018-03-26T03:00:00+02:00`

我想将它们解析为base应该偏移 0 的值,以便进行更轻松的比较,但同时也将日期保留在真正人类可读的状态(这意味着我想保留 Offset,而不是例如即时)。

如何使用正确的日期传输将偏移量解析OffsetDateTime为偏移+00量(称为UTCor ZULU)(我的意思是,不仅将 2 更改为 0,而且还正确计算日期和时间)。

标签: javatimejava-8timezoneutc

解决方案


当您知道如何时,这很容易:

    String dateTimeFromDatabase = "2018-03-26T03:00:00+03:00";
    OffsetDateTime dateTime = OffsetDateTime.parse(dateTimeFromDatabase)
            .withOffsetSameInstant(ZoneOffset.UTC);
    System.out.println("With offset 0: " + dateTime);

输出是:

偏移量 0:2018-03-26T00:00Z

我不明白你为什么介意得到一个Instant. 它打印为2018-03-26T00:00:00Z. 唯一的区别是秒数被包括在内,即使它们是00.

链接: 文档OffsetDateTime.withOffsetSameInstant()


推荐阅读