java - 将日历集 DAY_OF_WEEK 转换为使用 TemporalAdjusters

标签 java java-time dayofweek java.util.calendar

我有一些像这样的遗留代码

        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/

相关文章:

java - 当列表为空时,ActionBar PullToRefresh 不起作用

java - Bouncy CaSTLe scrypt 实现

c# - 一周的开始和结束时间

java - Spring 服务中的 LazyInitializationException

java - 在应用程序中添加签名栏

java - 使用threeten,LocalDate获取每月的第一天和最后一天

java - 使用多个可选模式时顺序的重要性

java - 在 Java 中解析日期时间字符串是否需要 `Locale`?

java - 从特定日期检索星期日

go - 在 golang 中显示一周的第二天