import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
public class KqUtils {
public static void main(String[] args){
/**
* 测试登录时间
*/
//学生登录时间(考勤时间)
Calendar cal2 =Calendar.getInstance();
cal2.set(0,0,0,7,20,0);//8:20
//学生下线时间(下课时间)
Calendar cal3 =Calendar.getInstance();
cal3.set(0,0,0,10,00,0);//20:56
HashMap<String,Object> map = kq(cal2,cal3);
if (map.get("course").toString().indexOf("")!=-1){
System.out.println("该学生于第"+map.get("course").toString()+"课"+map.get("status").toString());
}
else {
System.out.println("课程暂未开启");
}
}
public static HashMap<String,Object> kq(Calendar cal2, Calendar cal3){
HashMap<String,Object> map = new HashMap();
map.put("course",new ArrayList<Integer>());//课程未开始
ArrayList<Integer> course=new ArrayList();
ArrayList<String> status=new ArrayList();
//上课时间
ArrayList<String> list = new ArrayList<>();
list.add("08:10:00");
list.add("09:05:00");
list.add("10:10:00");
list.add("11:05:00");
list.add("14:30:00");
list.add("15:25:00");
list.add("16:20:00");
list.add("17:25:00");
ArrayList<Long> sk = new ArrayList<>();//存放上课的时间戳
ArrayList<Integer> minute_list = new ArrayList<>();//存放上课课程的分钟
for (String t1:list){
int hour = Integer.parseInt(t1.substring(0,2).startsWith("0")?t1.substring(1,2):t1.substring(0,2));
int mimute = Integer.parseInt(t1.substring(3,5).startsWith("0")?t1.substring(3,5):t1.substring(3,5));
int second = Integer.parseInt(t1.substring(6,8).startsWith("0")?t1.substring(6,8):t1.substring(6,8));
Calendar cal = Calendar.getInstance();
cal.set(0, 0, 0, hour, mimute, second);
sk.add(cal.getTimeInMillis());
minute_list.add(mimute);
}
for (int i = 0; i < 8 ; i++) {
// 2700000表示45分钟
if (cal2.getTimeInMillis() - sk.get(i) <= 2700000 && cal3.getTimeInMillis()-sk.get(i)>0) {//同一小时并且在当前课程的45分钟内登录,即当前课程
//根据登录时间-考勤时间判断是否准时出勤
if (sk.get(i) - cal2.getTimeInMillis() >= 0) {
course.add(i+1);
map.put("course",course);
status.add("出勤");
map.put("status",status);
}
if (sk.get(i) - cal2.getTimeInMillis() < 0 && cal2.get(Calendar.MINUTE) - minute_list.get(i) <= 10) {//超过考勤时间10分钟内
course.add(i+1);
map.put("course",course);
status.add("迟到");
map.put("status",status);
}
if (cal3.getTimeInMillis()-sk.get(i) < 2700000 && cal3.getTimeInMillis()-sk.get(i)>0){
course.add(i+1);
map.put("course",course);
status.add("早退");
map.put("status",status);
}
}
//在当前课程,超过考勤时间10分钟
if (cal2.get(Calendar.MINUTE) - minute_list.get(i) > 10 && sk.get(i) - cal2.getTimeInMillis() < 0 && cal2.getTimeInMillis() - sk.get(i) <= 2700000) {
course.add(i+1);
map.put("course",course);
status.add("旷课");
map.put("status",status);
}
}
return map;
}
}
自制学生考勤系统登录考勤工具类
最新推荐文章于 2022-12-28 12:33:30 发布