我可以从下面的代码中获取最后一个季度的值:
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int presentQuarter = (month / 3) + 1;
int lastQuarter = (presentQuarter - 1) > 0 ? presentQuarter - 1 : 4;
但是我怎样才能获得上季度的最后日期呢? (即 2017-06-30
这是上个季度的最后一个日期)。
最佳答案
您应该使用 JDK 8 的 java.time
API 并尝试 ThreeTen-Extra项目,以获得期望的结果,因为它在很大程度上简化了这些场景。
我想您只需要使用日期,这样您就可以获得当前日期,如下所示:
ZoneId zone = ZoneId.systemDefault();
LocalDate today = LocalDate.now (zone);
然后,您可以使用YearQuarter
ThreeTen-Extra 的类别项目获取当前和上一季度的数据如下:
YearQuarter lastQuarter = YearQuarter.now (zone).minusQuarters(1);
LocalDate lastDayOfLastQuarter = lastQuarter.atEndOfQuarter ();
免责声明:我尚未测试代码,只是为了让您了解如何使用这些 API 轻松完成日期时间计算。
更新:这是对您正在使用 JDK 7 的评论的回应,我建议如果可能的话升级到 JDK 8,以利用它附带的所有新功能。如果您无法做到这一点,您可以使用 JDK 6 和 7 的 java.time
的向后移植,即 ThreeTen-Backport。 。但在这种情况下,您将无法使用 ThreeTen-Extra 项目的 YearQuarter 类,正如 Basil Bourque 在对本文的评论中指出的那样。 Hugo's answer已经展示了仅使用 ThreeTen-Backport 的方法。
关于java - 获取上季度的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45236119/