gpt4 book ai didi

java - 检查java中没有时间的日期范围并使用jodatime

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

我有一个用户提供的日期,当然是今天的日期。我正在尝试验证这 2 天之间的差异至少是 2 周。我已经使用标准库完成了此操作 - 但我尝试使用 jodaTime 执行此操作,但遇到了一些困难。

// BAD CODE - doesn't work       
// NOTE: getUserSuppliedDate() returns an instance of java.sql.Date
// Also assume that validation prior to this call has been run that
// validates that the userSuppliedDate comes AFTER today's date - not sure if
// that is relevant in the context I'm attempting to use these particular jodaTime APIs.
DateTime jodaStartDate = new DateTime(getUserSuppliedDate());
if (Days.daysBetween(jodaStartDate, DateTime.now()).isLessThan(Days.days(14))) {
System.out.println("Bad user. You have chosen...poorly.");
}
else {
System.out.println("Well done user. You have supplied wisely.");
}

// GOOD CODE ---- ? Help =)

最佳答案

您的代码给出了错误的结果,因为提供给 Days.daysBetween() 的日期顺序错误。由于您指定用户提供的日期在当前日期之后,因此您的方法将导致负数天数。

如果您切换顺序,将最早的日期放在前面,它将正常工作。

比较以下两个:

DateTime jodaStartDate = new DateTime().withYear(2018)
.withMonthOfYear(7)
.withDayOfMonth(5); // 15 days from now

System.out.println(Days.daysBetween(jodaStartDate, DateTime.now())); // "P-15D"
System.out.println(Days.daysBetween(DateTime.now(), jodaStartDate)); // "P15D"

在第一种情况下,-15 天将评估为少于 14 天。

使用几周而不是几天,您会遇到同样的问题:

System.out.println(Weeks.weeksBetween(jodaStartDate, DateTime.now())); // "P-2W"
System.out.println(Weeks.weeksBetween(DateTime.now(), jodaStartDate)); // "P2W"

关于java - 检查java中没有时间的日期范围并使用jodatime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50919962/

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