gpt4 book ai didi

java - 为什么两个日期之间的差异会多返回一天?

转载 作者:行者123 更新时间:2023-12-02 10:33:35 25 4
gpt4 key购买 nike

我有以下Instant对象

Instant instant = Instant.parse("2018-11-29T00:00:00.00Z");
verify(instant, 5);

今天的日期是 2018 年 11 月 24 日。我想编写一个方法来验证即时 是否距今天 5 天。方法如下:

public void verify(Instant instant, int offsetInDays)
{
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);
LocalDate endDate = LocalDate.from(localDateTime);
LocalDate now = LocalDate.now();
assertEquals(offsetInDays, ChronoUnit.DAYS.between(now, endDate));
}

它应该断言 5 等于 5,但是 ChronoUnit.DAYS. Between(now, endDate) 返回 6 天。为什么要多一天比较呢?我不知道如何进行准确的比较。

最佳答案

我认为您通过在 verify() 的第一行强制使用 UTC 来暴露一些您不知道的转换,然后将其转换为本地日期。无论我的机器涉及哪个时区,这都有效。

public void verify(Instant instant, int offsetInDays)
{
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);
LocalDateTime endDate = localDateTime.plusDays(offsetInDays);
assertEquals(offsetInDays, ChronoUnit.DAYS.between(localDateTime, endDate));
}

关于java - 为什么两个日期之间的差异会多返回一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53463753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com