使用 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
我有一个要求如下:例如,如果今天是星期天,那么我需要获得下个月的第一个星期日和最后一个星期日,以此类推一周中的所有日子。我需要得到下个月的第一天和最后一天。
关于我该怎么做的任何想法
有通用的方法吗,还是我需要分别处理每一天?我尝试了很多方法,但我发现的只是每天都有一个特殊的公式。
我使用的技术是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