使用 Java 获取最后一天和第一天

Get last and first day using Java

我有一个要求如下:例如,如果今天是星期天,那么我需要获得下个月的第一个星期日和最后一个星期日,以此类推一周中的所有日子。我需要得到下个月的第一天和最后一天。

关于我该怎么做的任何想法

有通用的方法吗,还是我需要分别处理每一天?我尝试了很多方法,但我发现的只是每天都有一个特殊的公式。

我使用的技术是Java。

我想,您可以继续将今天的日期添加到 7 天,然后继续。 这将是通用的。

例如:

获取日期:2020 年 5 月 3 日,星期日

加 7 天,2020 年 5 月 10 日(是下个月吗?不,儿子再加 7 天)

17.05.2020(是下个月吗?不是,儿子再加7)

等等

您可以使用 Date 接口轻松完成此添加操作

你可以试试这个

public static void main(String... args) {
    LocalDate now = LocalDate.now();
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("EEE: dd-MM-yyyy");

    System.out.println("Now " + now.format(dtf));
    System.out.println("First " + getFirstDayOfNextMonth(now).format(dtf));
    System.out.println("Last " + getLastDayOfNextMonth(now).format(dtf));
}

public static LocalDate getLastDayOfNextMonth(LocalDate localDate) {
    return localDate
            .plusMonths(1)
            .with(TemporalAdjusters.lastInMonth(localDate.getDayOfWeek()));
}


public static LocalDate getFirstDayOfNextMonth(LocalDate localDate) {
    return localDate
            .plusMonths(1)
            .with(TemporalAdjusters.firstInMonth(localDate.getDayOfWeek()));
}

输出:

Now Sun: 03-05-2020
First Sun: 07-06-2020
Last Sun: 28-06-2020

使用Java8次API,需要使用TemporalAdjusters,例如像这样:

LocalDate today = LocalDate.now();
DayOfWeek dayOfWeek = today.getDayOfWeek();
LocalDate nextMonth = today.plusMonths(1);
LocalDate first = nextMonth.with(TemporalAdjusters.firstInMonth(dayOfWeek));
LocalDate last = first.with(TemporalAdjusters.lastInMonth(dayOfWeek));

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("EEE, MMM d, uuuu");
System.out.println(today.format(fmt));
System.out.println(first.format(fmt));
System.out.println(last.format(fmt));

输出

Sun, May 3, 2020
Sun, Jun 7, 2020
Sun, Jun 28, 2020