求时间差

当求得是相差多少天的时候用下面的方法很容易解决。 

/**
* 用SimpleDateFormat计算时间差
* @throws ParseException 
*/
public static void calculateTimeDifferenceBySimpleDateFormat() throws ParseException {
    SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");
    /*天数差*/
    Date fromDate1 = simpleFormat.parse("2018-03-01 12:00");  
    Date toDate1 = simpleFormat.parse("2018-03-12 12:00");  
    long from1 = fromDate1.getTime();  
    long to1 = toDate1.getTime();  
    int days = (int) ((to1 - from1) / (1000 * 60 * 60 * 24));  
    System.out.println("两个时间之间的天数差为:" + days);

    /*小时差*/
    Date fromDate2 = simpleFormat.parse("2018-03-01 12:00");  
    Date toDate2 = simpleFormat.parse("2018-03-12 12:00");  
    long from2 = fromDate2.getTime();  
    long to2 = toDate2.getTime();  
    int hours = (int) ((to2 - from2) / (1000 * 60 * 60));
    System.out.println("两个时间之间的小时差为:" + hours);

    /*分钟差*/
    Date fromDate3 = simpleFormat.parse("2018-03-01 12:00");  
    Date toDate3 = simpleFormat.parse("2018-03-12 12:00");  
    long from3 = fromDate3.getTime();  
    long to3 = toDate3.getTime();  
    int minutes = (int) ((to3 - from3) / (1000 * 60));  
    System.out.println("两个时间之间的分钟差为:" + minutes);
}

输出结果是:

两个时间之间的天数差为:11
两个时间之间的小时差为:264
两个时间之间的分钟差为:15840

当求的是相差几个月的时候用上面的方法就不准确了

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
		Calendar mid = Calendar.getInstance();
        Calendar bef = Calendar.getInstance();
        Calendar aft = Calendar.getInstance();
        
        mid.setTime(sdf.parse("2017-7"));
        bef.setTime(sdf.parse(creditDate));
        aft.setTime(sdf.parse(lastDayOfMonth));
        
        int resultbef = bef.get(Calendar.MONTH) - mid.get(Calendar.MONTH);
        int yearmonthbef = (bef.get(Calendar.YEAR) - mid.get(Calendar.YEAR)) * 12;
        int monthbef= yearmonthbef + resultbef;
        
        int resultaft = aft.get(Calendar.MONTH) - mid.get(Calendar.MONTH);
        int yearmonthaft = (aft.get(Calendar.YEAR) - mid.get(Calendar.YEAR)) * 12;
        int monthaft= yearmonthaft + resultaft;
        int month=0;
        month=monthaft-monthbef;

最终求出的month就是相差多少月,当求差几个月的时候要用日历类,这样会更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值