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;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在Excel中,可以使用公式计算两个时间之间的差值。最常用的公式是`=结束时间-开始时间`。这个公式将返回两个时间之间相差的天数,如果想要得到相差的小时数或分钟数,可以将返回值除以相应的因子(例如,24小时/天,60分钟/小时)。 ### 回答2: 在Excel中计算两个时间差值可以使用函数DURATION来实现。DURATION函数会计算两个时间之间的差,并返回以小时、分钟或秒为单位的结果。 要使用DURATION函数,首先需要确保两个时间在Excel中以日期和时间格式进行了正确的输入。例如,时间1输入为A1单元格,时间2输入为B1单元格。 然后,在C1单元格中输入以下公式:=DURATION(A1,B1)。 按下回车键后,C1单元格将显示时间1和时间2之间的差值。 需要注意的是,Excel认为日期的起始时间为1900年1月1日,当计算跨越多天的时间差时,Excel会自动将差值转换为“天-小时:分钟:秒”的格式。 另外,如果您只想得到差值的小时部分,可以使用HOUR函数和差值作为输入,该函数将返回小时数。类似地,使用MINUTE函数或SECOND函数可以得到差值的分钟或秒数部分。 通过以上的方法,您可以在Excel中轻松计算两个时间差值。 ### 回答3: 在Excel中,我们可以使用函数来计算两个时间差值。 首先,我们需要确保时间的数据格式为时间格式。我们可以选择时间单元格,然后右键击选择“格式单元格”,在“数字”选项卡中选择“时间”,选择适合的时间格式。 接下来,我们可以使用函数DATEDIF来计算两个时间之间的差值。DATEDIF函数的语法如下:DATEDIF(start_date, end_date, "unit")。 - start_date是开始时间; - end_date是结束时间; - "unit"是所需的时间单位,可以是"y"代表年,"m"代表月,"d"代表日,"h"代表小时,"n"代表分钟,"s"代表秒。 例如,假设我们有一个开始时间为8:00AM,结束时间为10:30AM,我们想要计算两个时间差值。我们可以使用以下公式:=DATEDIF(A1, A2, "h"),其中A1为开始时间单元格,A2为结束时间单元格。 这样,Excel将会计算并显示两个时间差值,以小时为单位。在我们的例子中,差值将会显示为2.5小时。 请注意,DATEDIF函数在Excel中被视为一个已停用的函数,但仍然可以正常工作。您需要手动输入这个函数,而不是从函数列表中选择。 以上就是用Excel计算两个时间差值的方法。使用这个方法,您可以轻松地计算并获得两个时间之间的差异。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值