我有一些像这样的遗留代码
final Calendar cal = new GregorianCalendar();
cal.setTime(today);
// changed on May-03-2004
//cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
cal.add(Calendar.DAY_OF_YEAR, -6);
} else {
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
}
//System.out.println("Begin of cycle: " + cal.getTime());
我想将其转换为使用 java.time TemporalAdjuster 类,以使其更具可读性。
但我不太确定如何解释https://stackoverflow.com/a/1319484/242042使行为匹配。
最佳答案
假设今天
确实是今天的日期,那么Java Time API版本,使用TemporalAdjusters
,将是:
LocalDate today = LocalDate.now();
TemporalAdjuster adjuster = TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY);
LocalDate monday = today.with(adjuster);
System.out.println(today + " -> " + monday);
示例输出
2020-02-01 -> 2020-01-27
2020-02-01
是星期六,2020-01-27
是前一个星期一。
关于java - 将日历集 DAY_OF_WEEK 转换为使用 TemporalAdjusters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60021677/