我的本地日期时间(发货),格式类似“2023-01- 11 T01:25:59”
我需要与当前时间进行比较,以满足以下条件
1.如果两者都在同一日期,且发货时间超过当前时间
1.发货日期等于下一个当前日期(在本例中,发货日期= 2023-01-11 ==当前日期+ 1天
我做了这个,但它不工作与小时
LocalDateTime shippingdate= (calling funtion)
System.out.println("shippingdate "+shippingdate); //2023-01-11T01:25:59
LocalDateTime currentDateTime = LocalDateTime.now(ZoneId.of("UTC"));
System.out.println("currentTime "+currentDateTime); //2023-01-10T03:42:52.574994
int diff = shippingdate.compareTo(currentDateTime);
if (diff==1) {
}
if (diff > 1) {
}
LocalDateTime currentDateTime = LocalDateTime.now(ZoneId.of("UTC"));
1条答案
按热度按时间svmlkihl1#
LocalDateTime
不能表示力矩一个问题是您对
LocalDateTime
类的不当使用。该类故意缺少UTC中的时区或办公室上下文。因此该类不能表示某个时刻,即时间线上的某个特定点。但显然您正在尝试跟踪这些时刻。如果只提供日期和时间,则解析为
LocalDateTime
。OffsetDateTime
但是如果你确定日期和时间是用来表示偏移量为零的时刻,那么就立即转换为
OffsetDateTime
,同时,告诉你的输入数据的发布者他们未能传达所有三个重要信息(日期、时间、* 和 * 偏移量/区域)。这里的想法是"说实话"。如果意图是一个日期和时间,就像在UTC中看到的那样,那么我们的代码应该表示一个日期和时间,就像在UTC中看到的那样。
显然,您希望将UTC中的此日期时间与UTC中显示的当前时刻进行比较。
LocalDate
你最关心的是日期。
OffsetDateTime#getHour
你的第二个顾虑显然是你想知道今天的目标时间是否与当前时间相同,你在这一点上写得一点也不清楚,但这是我的猜测。
因此,在上面的"等于今天"测试分支中添加一个嵌套测试。
或者你想在以后的一个小时里测试。