0

在 Java 中,我可以通过这种方式获得每月的第一天:

GregorianCalendar date;
// Some code
int first = new GregorianCalendar(date.get(Calendar.YEAR),
            date.get(Calendar.MONTH), 1).get(Calendar.DAY_OF_WEEK);

我想知道是否有直接执行此操作的功能,因为我找不到可以获取此重要信息的功能。

类似于我在这里尝试做的事情:

 for (int i = 1; i < days_in_month + first; i++) {
     // Some code
     if (i - first + 1 == date.get(Calendar.DAY_OF_MONTH)) {
         // Do something
     }
 }
4

3 回答 3

4

您可以将GregorianCalendar对象转换为LocalDate对象并使用它方便的 API:

LocalDate getWithFirstDayOfMonth(GregorianCalendar c) {
    LocalDate date = c.toZonedDateTime().toLocalDate();
    return date.withDayOfMonth(1);
}

GregorianCalendar calendar = GregorianCalendar.from(ZonedDateTime.now());
LocalDate first = getWithFirstDayOfMonth(calendar);
System.out.println(first.getDayOfMonth());
于 2018-01-17T20:38:20.113 回答
1

简单地说,没有。这是获得这样的东西的正确方法。

这实际上是他们在 Java 中为使这样的计算成为可能而放入的功能。任何形式的“直接功能”都会在内部简单地执行此操作(我建议您这样做。)

于 2018-01-17T20:20:21.500 回答
1
于 2018-01-20T07:26:44.477 回答