获取java8中的周一和周日
介绍
在Java 8中,我们可以使用java.time
包中的LocalDate
类来获取当前日期,然后通过一些计算来获得周一和周日的日期。本文将向你展示如何实现这一过程。
流程图
flowchart TD
A[获取当前日期] -->B[计算与周一的偏移量]
B -->C{偏移量是否为0}
C -- 是 --> D[返回当前日期]
C -- 否 --> E[计算周一的日期]
E --> F[计算与周日的偏移量]
F --> G{偏移量是否为6}
G -- 是 --> H[返回当前日期]
G -- 否 --> I[计算周日的日期]
步骤
下面是实现获取周一和周日的步骤:
步骤 | 代码 | 说明 |
---|---|---|
1 | LocalDate currentDate = LocalDate.now(); |
获取当前日期 |
2 | int offsetToMonday = DayOfWeek.from(currentDate).getValue() - DayOfWeek.MONDAY.getValue(); |
计算当前日期与周一的偏移量 |
3 | if (offsetToMonday == 0) return currentDate; |
如果偏移量为0,直接返回当前日期 |
4 | LocalDate monday = currentDate.minusDays(offsetToMonday); |
计算周一的日期 |
5 | int offsetToSunday = DayOfWeek.SUNDAY.getValue() - DayOfWeek.from(currentDate).getValue(); |
计算当前日期与周日的偏移量 |
6 | if (offsetToSunday == 6) return currentDate; |
如果偏移量为6,直接返回当前日期 |
7 | LocalDate sunday = currentDate.plusDays(offsetToSunday); |
计算周日的日期 |
8 | return monday; |
返回周一的日期 |
9 | return sunday; |
返回周日的日期 |
代码实现
下面是完整的代码实现:
import java.time.DayOfWeek;
import java.time.LocalDate;
public class WeekDayUtils {
public static LocalDate getMonday() {
LocalDate currentDate = LocalDate.now();
int offsetToMonday = DayOfWeek.from(currentDate).getValue() - DayOfWeek.MONDAY.getValue();
if (offsetToMonday == 0) return currentDate;
LocalDate monday = currentDate.minusDays(offsetToMonday);
return monday;
}
public static LocalDate getSunday() {
LocalDate currentDate = LocalDate.now();
int offsetToSunday = DayOfWeek.SUNDAY.getValue() - DayOfWeek.from(currentDate).getValue();
if (offsetToSunday == 6) return currentDate;
LocalDate sunday = currentDate.plusDays(offsetToSunday);
return sunday;
}
public static void main(String[] args) {
LocalDate monday = getMonday();
LocalDate sunday = getSunday();
System.out.println("周一:" + monday);
System.out.println("周日:" + sunday);
}
}
以上代码中,getMonday()
方法用于获取当前周一的日期,getSunday()
方法用于获取当前周日的日期。在main()
方法中,我们可以直接调用这两个方法来获取并输出周一和周日的日期。
类关系图
下面是本文所使用的类之间的关系图:
erDiagram
class LocalDate {
+ LocalDate now()
+ LocalDate minusDays(int days)
+ LocalDate plusDays(int days)
}
class DayOfWeek {
+ int getValue()
+ static DayOfWeek from(TemporalAccessor temporal)
+ static DayOfWeek MONDAY
+ static DayOfWeek SUNDAY
}
class WeekDayUtils {
+ LocalDate getMonday()
+ LocalDate getSunday()
+ void main(String[] args)
}
在上面的类关系图中,LocalDate
类提供了一些方法来操作日期,DayOfWeek
类表示星期几,WeekDayUtils
类是我们自己定义的工具类,用于获取周一和周日的日期。
总结
通过本文,我们了解了如何使用Java 8中的java.time
包来获取周一和周日的日期。我们使用了LocalDate
类来获取当前日期,并使用一些计算来获得周一和周日的日期。通过理解这个流程和代码,刚入行的小白也能够轻松地实现这个功能。