获取根据当前时间 获取本周内的每一天的开始时间与结束时间的时间段 最后的时间为59:59:59 输出类型为Date, 格式为2020-09-09 00:10:10 java
时间: 2023-11-28 13:51:13 浏览: 60
可以使用Java 8的时间API来实现这个功能。具体代码如下:
```java
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class TimeUtil {
public static void main(String[] args) {
List<Date[]> dateList = getWeekDateRange(new Date());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
for (Date[] dates : dateList) {
LocalDateTime startDateTime = LocalDateTime.ofInstant(dates[0].toInstant(), java.time.ZoneId.systemDefault());
LocalDateTime endDateTime = LocalDateTime.ofInstant(dates[1].toInstant(), java.time.ZoneId.systemDefault());
String startTimeStr = startDateTime.format(formatter);
String endTimeStr = endDateTime.format(formatter);
System.out.println(startTimeStr + " - " + endTimeStr);
}
}
public static List<Date[]> getWeekDateRange(Date date) {
List<Date[]> dateList = new ArrayList<>();
LocalDate localDate = LocalDate.now();
if (date != null) {
localDate = LocalDate.ofInstant(date.toInstant(), java.time.ZoneId.systemDefault());
}
localDate = localDate.with(DayOfWeek.MONDAY);
for (int i = 0; i < 7; i++) {
LocalDate start = localDate.plusDays(i);
LocalDate end = start.plusDays(1).minusSeconds(1);
LocalDateTime startDateTime = LocalDateTime.of(start, LocalTime.MIN);
LocalDateTime endDateTime = LocalDateTime.of(end, LocalTime.MAX);
Date[] dates = new Date[2];
dates[0] = Date.from(startDateTime.atZone(java.time.ZoneId.systemDefault()).toInstant());
dates[1] = Date.from(endDateTime.atZone(java.time.ZoneId.systemDefault()).toInstant());
dateList.add(dates);
}
return dateList;
}
}
```
该代码中,首先通过Java 8的时间API获取当前日期所在的周的周一和周日的日期,然后循环遍历每一天,并计算出该天的开始时间和结束时间。最后将每一天的开始时间和结束时间存放在Date数组中,并将这些Date数组存放在List中返回。在主函数中,我们可以将这些Date类型的时间转换为指定格式的String类型,然后输出即可。
阅读全文