java 获取每周的开始和结束时间
时间: 2023-09-03 08:15:28 浏览: 165
你可以使用 `java.time` 包中的 `LocalDate` 和 `TemporalAdjuster` 类来获取每周的开始和结束时间。以下是一个示例代码:
```java
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
public class WeeklyTime {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
LocalDate startOfWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
LocalDate endOfWeek = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
System.out.println("Start of week: " + startOfWeek);
System.out.println("End of week: " + endOfWeek);
}
}
```
这段代码会输出当前日期所在的周的开始和结束时间。你也可以将 `today` 替换成任何你需要的日期,来获取该日期所在周的开始和结束时间。
相关问题
获取近一周的开始时间和结束时间java
在Java中获取当前日期并计算出近一周的开始时间和结束时间,可以使用`java.time`包下的`LocalDate`, `DayOfWeek`, 和 `Duration` 类。以下是一个示例:
```java
import java.time.LocalDate;
import java.time.DayOfWeek;
import java.time.Duration;
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
// 当前日期
LocalDateTime currentDate = LocalDateTime.now();
// 计算本周的第一天
DayOfWeek todayDayOfWeek = currentDate.getDayOfWeek(); // 今天是星期几
LocalDate startDate = currentDate.minusWeeks(0).with(TemporalAdjusters.previousOrSame(todayDayOfWeek)); // 减去过去一周,调整到同一天
// 计算本周的最后一天
Duration oneWeek = Duration.ofWeeks(1);
LocalDateTime endDate = currentDate.plus(oneWeek);
System.out.println("本周开始时间: " + startDate);
System.out.println("本周结束时间: " + endDate);
}
}
```
这个代码首先获取当前日期,然后找到今天的前一个同一天作为本周开始时间,接着加上一周得到本周的结束时间。注意这里假设每周的第一天是从星期日开始。
java通过开始时间结束时间获取去掉节假日的工时
您可以使用Java中的日期时间类和Calendar类来计算两个日期之间的工作小时数,然后在计算过程中排除节假日。以下是一个示例代码:
```java
import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
public class WorkingHoursCalculator {
/**
* 计算两个日期之间的工作小时数
*
* @param startDate 开始日期
* @param endDate 结束日期
* @param holidays 节假日列表
* @return 工作小时数
*/
public static double calculateWorkingHours(Date startDate, Date endDate, Set<Date> holidays) {
// 设置每天的工作时间(这里假设每天工作8小时)
int workHoursPerDay = 8;
// 创建Calendar对象
Calendar calendar = Calendar.getInstance();
// 设置开始日期
calendar.setTime(startDate);
// 初始化总工作小时数
double totalWorkingHours = 0;
// 循环遍历每一天
while (calendar.getTime().before(endDate)) {
// 排除周末和节假日
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek != Calendar.SATURDAY && dayOfWeek != Calendar.SUNDAY && !holidays.contains(calendar.getTime())) {
totalWorkingHours += workHoursPerDay;
}
// 增加一天
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
// 计算最后一天的工作小时数
if (calendar.getTime().equals(endDate)) {
int endHour = calendar.get(Calendar.HOUR_OF_DAY);
totalWorkingHours += endHour - 9; // 假设每天从9点开始工作
}
return totalWorkingHours;
}
public static void main(String[] args) {
// 测试
Calendar startCalendar = Calendar.getInstance();
startCalendar.set(2021, Calendar.JANUARY, 1, 9, 0, 0); // 2021年1月1日9点
Calendar endCalendar = Calendar.getInstance();
endCalendar.set(2021, Calendar.JANUARY, 8, 18, 0, 0); // 2021年1月8日18点
Set<Date> holidays = new HashSet<>();
holidays.add(startCalendar.getTime()); // 2021年元旦节
holidays.add(endCalendar.getTime()); // 2021年元宵节
double workingHours = calculateWorkingHours(startCalendar.getTime(), endCalendar.getTime(), holidays);
System.out.println("工作小时数:" + workingHours);
}
}
```
上面的代码假设每天工作8小时,并且每周六日和节假日不工作。在计算最后一天的工作小时数时,假设工作从9点开始。您可以根据您的实际需求进行修改。
阅读全文