3 回答
TA贡献1874条经验 获得超12个赞
我想计算一年的双周日期。所以我每个月应该有 2 次约会。
不,不一定。一年有 52 周(加上一点),但只有 12 个月。双周 - 每隔一周 - 每年会给你 26 或 27 个日期,而“每月 2 个日期”会给你每年 24 个日期。
如果您想要一年中每个月的第 1 和第 16(不是第 15?),我建议您循环执行此操作:
for (int month = 1; month <= 12; month++) {
System.out.println(LocalDate.of(year, month, 1);
System.out.println(LocalDate.of(year, month, 16);
}
听起来这将为您提供您正在寻找的输出 - 但您应该意识到这不是大多数人所理解的“双周刊”。
TA贡献1808条经验 获得超4个赞
您可以使用lastDayOfMonth()方法 from TemporalAdjusters。例子:
import java.time.LocalDate;
import static java.time.temporal.TemporalAdjusters.lastDayOfMonth;
public class NewClass2 {
public static void main(String[] args) {
LocalDate currentYearFirstDate = LocalDate.of(2019, 01, 01);
LocalDate currentYearLastDate = LocalDate.of(2019, 12, 31);
for (LocalDate date = currentYearFirstDate; date.isBefore(currentYearLastDate);date = date.plusMonths(1)) {
LocalDate firstHalfStart = date;
LocalDate firstHalfEnd = date.plusDays(14);
LocalDate secondHalfStart = date.plusDays(15);
LocalDate secondHalfEnd = date.with(lastDayOfMonth());
System.out.println(firstHalfStart + " to " + firstHalfEnd + " , " + secondHalfStart + " to " + secondHalfEnd);
}
}
}
TA贡献1853条经验 获得超6个赞
对于将来有相同要求的其他人-
使用这个
for (int month = 1; month <= 12; month++) {
int lastDayOfMonth = YearMonth.of(currentYear, month).lengthOfMonth();
System.out.println(LocalDate.of(currentYear, month, 1)+" To "+LocalDate.of(currentYear, month, 15)+" , "+LocalDate.of(currentYear, month, 16)+" To "+LocalDate.of(currentYear, month, lastDayOfMonth));
}
我得到了我需要的——
2019-01-01 To 2019-01-15 , 2019-01-16 To 2019-01-31
2019-02-01 To 2019-02-15 , 2019-02-16 To 2019-02-28
2019-03-01 To 2019-03-15 , 2019-03-16 To 2019-03-31
2019-04-01 To 2019-04-15 , 2019-04-16 To 2019-04-30
2019-05-01 To 2019-05-15 , 2019-05-16 To 2019-05-31
2019-06-01 To 2019-06-15 , 2019-06-16 To 2019-06-30
2019-07-01 To 2019-07-15 , 2019-07-16 To 2019-07-31
2019-08-01 To 2019-08-15 , 2019-08-16 To 2019-08-31
2019-09-01 To 2019-09-15 , 2019-09-16 To 2019-09-30
2019-10-01 To 2019-10-15 , 2019-10-16 To 2019-10-31
2019-11-01 To 2019-11-15 , 2019-11-16 To 2019-11-30
2019-12-01 To 2019-12-15 , 2019-12-16 To 2019-12-31
添加回答
举报