java计算两个时间的差值(包括凌晨时间)

第一种写法:

    String offtime = "2018-05-02 00:21:11";

    String ontime = "2018-05-01 06:02:01";

long onDutyBack = Timestamp.valueOf(onTime).getTime();
long offDutyBack = Timestamp.valueOf(offtime).getTime();
long days = (offDutyBack-onDutyBack) / (1000 * 60 * 60 * 24);
long hours = ((offDutyBack-onDutyBack)-days*(1000 * 60 * 60 * 24))/(1000* 60 * 60);
第二种写法:(不推荐)

public static long getDaySub(String onTime, String offTime) {
    DateFormat df = new SimpleDateFormat("HH:mm:ss");
    long diff = 0;
    long hours = 0;
    try {
        Date d1 = df.parse(offTime);
        Date d2 = df.parse(onTime);
        if (isBetweenDate(offTime, "00:00:00", "05:59:59")) {//判断下班时间是否为零点以后
            Date d24 = df.parse("23:59:59");
            Date d0 = df.parse("00:00:00");
            diff = (d24.getTime() - d2.getTime()) + (d1.getTime()-d0.getTime());//这样得到的差值是微秒级别
        } else{
            diff = d1.getTime() - d2.getTime();//这样得到的差值是微秒级别
        }
        long days = diff / (1000 * 60 * 60 * 24);
        hours = (diff-days*(1000 * 60 * 60 * 24))/(1000* 60 * 60);
    }catch (Exception e) {
        e.printStackTrace();
    }
    return hours;
}
 
 

/**
 * @Author 
 * @Description: 比较一个时间是否在两个时间之间
 * @Date: 13:37 2018/5/28
 */
public static Boolean isBetweenDate(String offDutyTime, String startOffTime ,String endOffTime) {
    Date startOffDate = null;
    Date endOffDate = null;
    Date checkOffDate = null; //打开时间
    try {
        startOffDate = new SimpleDateFormat("HH:mm:ss").parse(startOffTime); //开始时间
        checkOffDate = new SimpleDateFormat("HH:mm:ss").parse(offDutyTime);  //基准时间
        endOffDate = new SimpleDateFormat("HH:mm:ss").parse(endOffTime);//结束时间
    } catch (ParseException e) {
        e.printStackTrace();
    }
    if (checkOffDate.getTime() == startOffDate.getTime() || checkOffDate.getTime() == endOffDate.getTime()) {
        return true;
    }
    Calendar date = Calendar.getInstance();
    date.setTime(checkOffDate);

    Calendar begin = Calendar.getInstance();
    begin.setTime(startOffDate);

    Calendar end = Calendar.getInstance();
    end.setTime(endOffDate);

    if (date.after(begin) && date.before(end)) {
        return true;
    } else {
        return false;
    }
}

猜你喜欢

转载自blog.csdn.net/ccmedu/article/details/80498682