【发布时间】:2022-01-19 18:39:29
【问题描述】:
我想我可以自己做这件事,但如果我不需要的话,我不想重新发明轮子(尤其是关于日期算术)。
我正在制作一个带有下拉菜单的摇摆应用程序,用户可以在其中选择时间间隔,选项为All, Today, This Week, This Month, This Quarter, This Year, Last Week, Last Month, Last Quarter, Last Year。当用户选择其中之一时,我想计算间隔。
例如,今天是 2022 年 1 月 19 日。如果有人选择了This Week,我的startDate 将是2022-01-16 00:00:00,而我的endDate 将是2022-01-22 11:59:59(或者2022-01-23 00:00:00 可能更有意义?)
对于All 选择,我已经实现了一种方法,其中我的startDate 是1970 年1 月1 日,而我的endDate 是从当前时间到未来几年的时间。我也可以自己做Today,只需获取今天的日期并调整从午夜到午夜的时间。
但是对于所有这些其他选项,我不知道是否已经有一个库或类似的库计算了我可以利用的它们。很久没接触java了,对生态系统不太了解。
同样重要的是 endDate 和 startDates 要么是 java.util.Date 类型,要么是它的子类,因为我需要将它与依赖它的代码集成。
任何指针将不胜感激。
【问题讨论】:
-
我强烈建议您使用
java.time类型进行日期数学运算,并仅在必要时转换为java.util.Date。例如,TemporalAdjusters是一个很好的起点。 -
啊,时间调节器看起来正是我所需要的——谢谢!
-
请注意,星期日并不是世界上每个国家/地区每周的第一天。我认为您的 Swing 应用程序不需要国际化,对吗?
-
正确,它是一个非常小的应用程序,本地用户群很小。
-
一旦您了解了一些基本概念,计算时区并不是真正的额外工作。并且保持您的代码时区精通可以在以后避免伤害世界。