localdatetime 判断上午
时间: 2024-10-19 21:10:20 浏览: 13
`LocalDateTime` 是 Java 中的一个类,它表示日期和时间,但不包括时区信息。如果你想要判断某个 `LocalDateTime` 对象是否代表上午的时间段,你可以通过获取小时值来完成。在 Java 8 及以后版本中,你可以这样做:
```java
LocalDateTime time = LocalDateTime.now(); // 获取当前时间
if (time.getHour() >= 0 && time.getHour() < 12) {
System.out.println("这是上午的时间");
} else if (time.getHour() == 12) {
System.out.println("这是中午(也可能是上午)");
} else {
System.out.println("这是下午或晚上");
}
```
这里假设标准的上午时间段是从 00:00 至 11:59。如果需要更严格的上午判断(排除中午),可以将条件修改为 `time.getHour() < 12 && time.minute() == 0 && time.second() == 0`。
相关问题
localdatetime拆分按照每12小时 的java代码
以下是将LocalDateTime拆分为每12小时的Java代码:
```
LocalDateTime dateTime = LocalDateTime.now(); // 获取当前时间
// 拆分时间为每12小时
LocalDateTime dateTime1 = dateTime.withHour(0).withMinute(0).withSecond(0).withNano(0); // 00:00:00
LocalDateTime dateTime2 = dateTime.withHour(12).withMinute(0).withSecond(0).withNano(0); // 12:00:00
// 判断当前时间是在哪个时间段内
if (dateTime.isBefore(dateTime2)) {
System.out.println("当前时间在上午时间段:" + dateTime1 + " - " + dateTime2);
} else {
System.out.println("当前时间在下午时间段:" + dateTime2 + " - " + dateTime1.plusDays(1));
}
```
上述代码中,首先获取当前时间,然后将时间拆分为每12小时,即上午和下午时间段。接着判断当前时间是在哪个时间段内,并输出相应的提示信息。
public String addAttendance(HttpSession session) { Integer userId = (Integer) session.getAttribute("userid"); // Integer userId =1; LocalDateTime now = LocalDateTime.now(); Attendance lastAttendance = attendanceService.getByAscTime(userId); Attendance attendance = new Attendance(); attendance.setUserid(userId); attendance.setDate(Date.from(now.atZone(ZoneId.systemDefault()).toInstant())); // 获取当前本机时间 LocalDate localDate = now.toLocalDate(); LocalTime localTime = now.toLocalTime(); // 判断数据库没有打卡记录或者有下班签到 if (lastAttendance == null || lastAttendance.getType().equals("下班签到")) { if (localTime.isBefore(LocalTime.of(9, 0))) { attendance.setType("上班签到"); } else if (localDate.equals(getLastAttendanceDate(lastAttendance))) { attendance.setType("下班签到"); } else if (localTime.isAfter(LocalTime.of(9, 0))){ attendance.setType("迟到"); }else if (localTime.isBefore(LocalTime.of(9, 17))){ attendance.setType("早退"); } } else { if (localDate.equals(getLastAttendanceDate(lastAttendance))) { if (localTime.isBefore(LocalTime.of(9, 0))) { attendance.setType("上班签到"); } else if (localTime.isBefore(LocalTime.of(17, 0))){ attendance.setType("早退"); }else if (localTime.isBefore(LocalTime.of(17, 0))){ attendance.setType("下班签到"); } } else { if (localTime.isBefore(LocalTime.of(9, 0))) { attendance.setType("上班签到"); } else if (localTime.isAfter(LocalTime.of(9, 0))){ attendance.setType("迟到"); }else if (localTime.isBefore(LocalTime.of(17, 0))){ attendance.setType("早退"); } } } attendanceService.save(attendance); return "success"; } private LocalDate getLastAttendanceDate(Attendance lastAttendance) { if (lastAttendance == null) { return null; } Date date = lastAttendance.getDate(); Instant instant = date.toInstant(); ZoneId zoneId = ZoneId.systemDefault(); return instant.atZone(zoneId).toLocalDate(); } }
这段代码是一个Java方法,用于添加考勤记录。接收一个`HttpSession`对象作为参数,从中获取当前用户的id,然后根据当前时间判断考勤类型,并将考勤记录保存到数据库中。
下面是具体的解释:
- `Integer userId = (Integer) session.getAttribute("userid")`:从`HttpSession`对象中获取当前用户的id。
- `LocalDateTime now = LocalDateTime.now()`:获取当前时间。
- `Attendance lastAttendance = attendanceService.getByAscTime(userId)`:根据用户id获取最近一次考勤记录。
- `Attendance attendance = new Attendance()`:创建一个新的考勤记录。
- `attendance.setUserid(userId)`:将当前用户的id设置为考勤记录的用户id。
- `attendance.setDate(Date.from(now.atZone(ZoneId.systemDefault()).toInstant()))`:将当前时间转换成`java.util.Date`类型,并设置为考勤记录的日期。
- `if (lastAttendance == null || lastAttendance.getType().equals("下班签到"))`:判断最近一次考勤记录是否为空或者为“下班签到”。如果是,则当前考勤记录为“上班签到”或“迟到”或“早退”。如果不是,则当前考勤记录为“下班签到”或“早退”。
- `if (localTime.isBefore(LocalTime.of(9, 0)))`:判断当前时间是否早于上午9点。
- `else if (localDate.equals(getLastAttendanceDate(lastAttendance)))`:判断当前日期是否与最近一次考勤记录的日期相同。
- `else if (localTime.isAfter(LocalTime.of(9, 0)))`:判断当前时间是否晚于上午9点。
- `else if (localTime.isBefore(LocalTime.of(9, 17)))`:判断当前时间是否早于上午9点17分。
- `else if (localTime.isBefore(LocalTime.of(17, 0)))`:判断当前时间是否早于下午5点。
- `else if (localTime.isBefore(LocalTime.of(17, 0)))`:判断当前时间是否早于下午5点。
- `attendanceService.save(attendance)`:将考勤记录保存到数据库。
- `return "success"`:返回一个字符串表示操作成功。
阅读全文