java 指定周获取周一到周日
时间: 2023-08-12 14:05:14 浏览: 213
要从Java中指定周获取周一到周日的日期,可以使用Java 8中的java.time包中的类。具体步骤如下:
1. 使用WeekFields类获取当前默认的ISO周字段。
```java
WeekFields weekFields = WeekFields.of(Locale.getDefault());
```
2. 使用指定的年份和周数创建一个TemporalField对象。
```java
int isoWeekNumber = 20; // 例如,要计算第20周的日期
int year = 2021; // 例如,要计算2021年第20周的日期
TemporalField woy = weekFields.weekOfWeekBasedYear();
TemporalAccessor accessor = woy.adjustInto(LocalDate.of(year, 1, 1)).with(woy, isoWeekNumber);
```
在上面的代码中,使用weekOfWeekBasedYear()方法获取周字段,并使用TemporalField对象调整到指定的周数。
3. 使用TemporalAccessor类获取指定周的周一和周日。
```java
LocalDate monday = LocalDate.from(accessor).with(DayOfWeek.MONDAY);
LocalDate sunday = LocalDate.from(accessor).with(DayOfWeek.SUNDAY);
```
在上面的代码中,使用LocalDate类的from()方法将TemporalAccessor对象转换为LocalDate对象,并使用with()方法获取指定日期的星期一和星期日。
完整的示例代码如下:
```java
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalField;
import java.time.temporal.WeekFields;
import java.util.Locale;
public class WeekToDateExample {
public static void main(String[] args) {
WeekFields weekFields = WeekFields.of(Locale.getDefault());
int isoWeekNumber = 20;
int year = 2021;
TemporalField woy = weekFields.weekOfWeekBasedYear();
TemporalAccessor accessor = woy.adjustInto(LocalDate.of(year, 1, 1)).with(woy, isoWeekNumber);
LocalDate monday = LocalDate.from(accessor).with(DayOfWeek.MONDAY);
LocalDate sunday = LocalDate.from(accessor).with(DayOfWeek.SUNDAY);
System.out.println("ISO week number: " + isoWeekNumber);
System.out.println("Year: " + year);
System.out.println("Monday: " + monday);
System.out.println("Sunday: " + sunday);
}
}
```
输出:
```
ISO week number: 20
Year: 2021
Monday: 2021-05-17
Sunday: 2021-05-23
```
阅读全文