final Calendar tentativeStartDate = Calendar.getInstance();
tentativeStartDate.set(Calendar.MILLISECOND, 0);
tentativeStartDate.set(Calendar.SECOND, 0);
tentativeStartDate.set(Calendar.MINUTE, 0);
tentativeStartDate.set(Calendar.HOUR, 0);
tentativeStartDate.set(Calendar.DATE, 1);
tentativeStartDate.add(Calendar.MONTH, -3);
我想要从当前月份之前的 3 个月开始。例如,如果今天是 6 月 18 日,我想要 4 月 1 日午夜 0 分/秒。 [ 4 月 1 日 00:00:00 ]
但是这个逻辑并没有给我正确的答案。 Java 中有更好/不同的方法吗?
最佳答案
使用 Java 8,您可以使用如下流畅的习惯用法:
分区
ZonedDateTime.now([your zone ID, e.g. ZoneId.systemDefault()])
// month offset
.minusMonths(2)
// start at day 1
.withDayOfMonth(1)
// change time-of-day to when the day starts
.truncatedTo(ChronoUnit.DAYS)
本地
LocalDate.now([your zone ID, e.g. ZoneId.systemDefault()])
.minusMonths(2)
.withDayOfMonth(1)
注意
因为您想要四月,所以我将月份偏移量设置为 2
。
关于java - 如何在Java中找到今天之前3个月的开始时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50911327/