// 请补全以下方法,要求下班时间不能大于20:00:00 // 时间格式如:2023-03-08 18:19:20 // 当参数在规定范围外时,不做任何动作 public void setEndtime(String endtime) { String[] s1 = endtime.split(" "); String time = "20:00:00";
时间: 2024-03-14 21:47:06 浏览: 70
可以使用 Java 中的 SimpleDateFormat 和 Calendar 类来实现这个功能。具体实现如下:
```java
public void setEndtime(String endtime) {
String[] s1 = endtime.split(" ");
String time = "20:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = sdf.parse(endtime);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
String[] s2 = time.split(":");
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(s2[0]));
calendar.set(Calendar.MINUTE, Integer.parseInt(s2[1]));
calendar.set(Calendar.SECOND, Integer.parseInt(s2[2]));
if (calendar.getTime().compareTo(date) > 0) {
sdf = new SimpleDateFormat("yyyy-MM-dd");
date = sdf.parse(s1[0]);
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(s2[0]));
calendar.set(Calendar.MINUTE, Integer.parseInt(s2[1]));
calendar.set(Calendar.SECOND, Integer.parseInt(s2[2]));
if (calendar.getTime().compareTo(date) > 0) {
return;
}
}
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
endtime = sdf.format(calendar.getTime());
// 这里可以将 endtime 赋值给类的成员变量
} catch (ParseException e) {
e.printStackTrace();
}
}
```
解释如下:
1. 首先根据传入的 endtime 和固定的时间字符串 "20:00:00",创建 SimpleDateFormat 对象和 Calendar 对象。
2. 利用 SimpleDateFormat 将 endtime 转化为 Date 对象,然后设置 Calendar 对象的时间为 endtime。
3. 将固定的时间字符串 "20:00:00" 拆分成小时、分钟、秒数三个部分,然后用 Calendar 对象设置相应的时间值。
4. 如果设置后的时间比原时间晚,说明超过了下班时间,直接返回。
5. 否则将 Calendar 对象转化为字符串格式,并将其赋值给类的成员变量。
阅读全文