java中 LocalDate如何根据当日获取本周一的日期
时间: 2024-11-07 12:03:19 浏览: 37
在Java中,你可以使用`LocalDate`和`DayOfWeek`类来获取当前日期所在周的第一天。首先,你需要获取当前日期,然后找到这个日期是一周中的哪一天,再从这一天开始向前移动到周一。这里是一个示例:
```java
import java.time.LocalDate;
import java.time.DayOfWeek;
public LocalDate getMondayOfCurrentWeek() {
// 获取当前日期
LocalDate currentDate = LocalDate.now();
// 找到当前日期是一周中的哪一天
DayOfWeek currentDayOfWeek = currentDate.getDayOfWeek();
// 如果当前已经是周一,则无需做任何操作
if (currentDayOfWeek == DayOfWeek.MONDAY) {
return currentDate;
}
// 否则,计算到周一的距离
int daysToMove = DayOfWeek.MONDAY.getValue() - currentDayOfWeek.getValue();
// 向前移动到周一
return currentDate.minusDays(daysToMove);
}
相关问题
java中获取本月开始时间_java获取当天,前天,明天,本周,本月,本年的开始日期时间和结束日期时间...
在Java中,我们可以使用`java.time`包下的类来方便地获取当前月份、周、年份等的开始和结束日期时间。这里有一些常用的方法示例:
1. 获取本月开始日期:
```java
import java.time.LocalDate;
import java.time.MonthDay;
MonthDay thisMonth = MonthDay.now();
LocalDate startDateOfMonth = thisMonth.atStartOfMonth().atStartOfDay(); // 获取本月第一天0点
```
2. 获取当前日期和时间:
```java
LocalDateTime currentDate = LocalDateTime.now();
```
3. 获取昨天、今天、明天的日期:
```java
LocalDate yesterday = currentDate.minusDays(1);
LocalDate tomorrow = currentDate.plusDays(1);
```
4. 获取本周开始和结束日期:
```java
LocalDateTime startOfWeek = currentDate.with(TemporalAdjusters.firstDayOfWeek());
LocalDateTime endOfWeek = startOfWeek.plusWeeks(1).minusDays(1); // 不包括下周一
```
5. 获取本月开始和结束日期:
```java
LocalDate endDateOfMonth = startDateOfMonth.plusMonths(1).minusDays(1); // 包含本月最后一日
```
6. 获取本年度开始和结束日期:
```java
LocalDate startDateOfYear = LocalDate.of(currentYear(), 1, 1);
LocalDate endDateOfYear = startDateOfYear.plusYears(1).minusDays(1);
int currentYear = currentDate.getYear(); // 获取当前年份
```
请注意,在上述代码中,`TemporalAdjusters.firstDayOfWeek()`默认按照ISO-8601标准计算一周的第一天,即周一。
通过日历对象获取本周一
在中国的Java程序中,你可以使用`java.time`包下的`LocalDate`类以及`java.util.Calendar`类来获取当前周一开始的时间。这里是一个简单的例子:
```java
import java.time.LocalDate;
import java.util.Calendar;
public class Main {
public static void main(String[] args) {
// 获取当前日期
LocalDate currentDate = LocalDate.now();
// 设置Calendar实例,并将其设置为周一( Calendar.MONDAY=2)
Calendar calendar = Calendar.getInstance();
calendar.set(currentDate.getYear(), currentDate.getMonthValue() - 1, currentDate.getDayOfMonth()); // 减一天是因为一周的第一天通常是星期一,而不是星期日
// 如果当前已经是周一,则不需要调整
if (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
calendar.add(Calendar.DATE, 1 - calendar.get(Calendar.DAY_OF_WEEK)); // 向前加一天直到到达周一
}
System.out.println("本周一开始于: " + calendar);
}
}
```
这个代码首先获取当前日期,然后创建一个`Calendar`实例并设置为当前月份的第一个星期一。如果当天不是周一,就向后添加日期直到达到周一。
阅读全文