我如何每两周设置一次日历

时间:2019-03-28 00:13:10

标签: java android calendar

我有我的小代码,我想每两周得到一次,但似乎做对了。如何在日历类中每两周显示一次。在我的双周刊上,我只是输入了随机代码。

   case "Bi-Weekly": {
                beginCalendar.add(Calendar.DAY_OF_MONTH, Calendar.WEDNESDAY);
                break;
            }
case "Month": {
                beginCalendar.add(Calendar.MONTH, 1);
                break;
            }


            case "Quarterly": {
                beginCalendar.add(Calendar.MONTH, 3);
                break;
            }
            case "Half Yearly": {
                beginCalendar.add(Calendar.MONTH, 6);
                break;
            }
            case "Year": {
                beginCalendar.add(Calendar.MONTH, 12);
                break;

2 个答案:

答案 0 :(得分:0)

我认为

.add(Calendar.WEEK_OF_YEAR,2);

是正确的选择,即使我会对其在年度变化期间的表现进行一些测试

答案 1 :(得分:0)

java.time

    LocalDate date = LocalDate.of(2019, Month.DECEMBER, 25);

    switch (recurrence) {
        case "Bi-Weekly": {
            date = date.plusWeeks(2);
            break;
        }
        case "Month": {
            date = date.plusMonths(1);
            break;
        }
        case "Quarterly": {
            date = date.plusMonths(3);
            break;
        }
        case "Half Yearly": {
            date = date.plusMonths(6);
            break;
        }
        case "Year": {
            date = date.plusYears(1);
            break;
        }

        default:
            System.err.println("Unrecognized recurrence: " + recurrence);
            break;
    }

    System.out.println("Added for " + recurrence + " gave: " + date);

使用不同的字符串(以不同的顺序)尝试代码可以得出:

Added for Bi-Weekly gave: 2020-01-08
Added for Year gave: 2020-12-25
Added for Quarterly gave: 2020-03-25
Added for Half Yearly gave: 2020-06-25
Added for Month gave: 2020-01-25

您的日历活动也有一天的时间吗?没问题:如果使用ZonedDateTimeLocalDateTime而不是LocalDate,则代码的工作原理相同。

您使用的Calendar类的设计很差,而且已经过时了。我发现java.time是现代的Java日期和时间API,使用起来非常好。这就是为什么我想向您显示此选项的原因。

问题:我可以在Android上使用java.time吗?

是的,java.time在较新和较旧的Android设备上均可正常运行。它只需要至少 Java 6

  • 在Java 8和更高版本以及更新的Android设备(API级别26以上)中,内置了现代API。
  • 在Java 6和7中,获得了ThreeTen反向端口,这是现代类的反向端口(JSR 310的ThreeTen;请参见底部的链接)。
  • 在(较旧的)Android上,使用Android版本的ThreeTen Backport。叫做ThreeTenABP。并确保您使用子包从org.threeten.bp导入日期和时间类。

链接