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);
Run Code Online (Sandbox Code Playgroud)
我想在本月之前的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)
Run Code Online (Sandbox Code Playgroud)
本地
LocalDate.now([your zone ID, e.g. ZoneId.systemDefault()])
.minusMonths(2)
.withDayOfMonth(1)
Run Code Online (Sandbox Code Playgroud)
注意
我将月份偏移设置为2你想要4月份.