我创建了一个类,其中包含两个需要日期的字段, start_date
和 date_passed
。我一直在研究在 Java 中使用 YYYY MM DD
格式的日期的最佳方法,该格式允许轻松减去日期,并且能够“弥补”日期,例如将来。
我想要它做什么的例子……
library.circulate_book("Chemistry", **start date here**) //actual date or random date
library.pass_book("Chemistry", **Date Passed here**) //random date such as 5 days after start date
int days_had = Date_Passed - start_date
到目前为止,我已经找到了很多使用 Calendars 和 Date 类来格式化日期的方法,但还没有找到一种看起来可行的方法,因为大多数日期最终都是字符串。非常感谢任何建议/小例子!此外,任何指向示例的链接都很棒!
原文由 Bob 发布,翻译遵循 CC BY-SA 4.0 许可协议
tl;博士
通过加/减天数从一个日期移动到另一个日期。
计算两个日期之间相隔的天数、月数和年数。
解析
首先,您必须将字符串输入解析为日期时间对象。然后您使用这些对象执行您的 业务逻辑。
不要再将日期时间值视为字符串,这会让您抓狂。我们在代码中使用日期时间对象;我们使用该日期时间对象的字符串表示与用户或其他应用程序交换数据。
在 Java 8 及更高版本中,使用 java.time 框架。请参阅 教程。
您只需要一个日期,不需要时间,因此我们可以使用
LocalDate
类。那个时髦的双冒号语法是一个 方法引用,一种说明其他代码应该调用什么方法的方法。
当前的日期
确定今天的日期需要时区。对于任何给定时刻,日期在全球范围内因地区而异。
如果您想要 JVM 当前的默认时区,请调用
ZoneId.systemDefault
。减去日期
之前在 StackOveflow.com 上已经多次解决这个问题。例如, 如何使用 Java 日历从日期中减去 X 天? .有关详细信息,请参阅其他答案,例如 我的这个和我 的 这个以 获取更多详细信息。提示:“elapsed”是关键搜索词。
使用
ChronoUnit.DAYS
枚举来计算经过的天数。转储到控制台。