java获取两个Date时间之差

java中获取两个时间类型之差,按照年月日时分秒输出;

public static void main(String[] args) {
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String a = "2019-03-20 15:15:12";
        String b = "2019-03-20 15:30:37";

        try {
            Date d1 = sf.parse(a);
            Date d2 = sf.parse(b);
            String s = getTime(d2,d1);
            System.out.println(s);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static String getTime(Date currentTime,Date firstTime){
        long diff = currentTime.getTime() - firstTime.getTime();//这样得到的差值是微秒级别
        Calendar currentTimes =dataToCalendar(currentTime);//当前系统时间转Calendar类型
        Calendar firstTimes =dataToCalendar(firstTime);//查询的数据时间转Calendar类型
        int year = currentTimes.get(Calendar.YEAR) - firstTimes.get(Calendar.YEAR);//获取年
        int month = currentTimes.get(Calendar.MONTH) - firstTimes.get(Calendar.MONTH);
        int day = currentTimes.get(Calendar.DAY_OF_MONTH) - firstTimes.get(Calendar.DAY_OF_MONTH);
        if (day < 0){
            month-=1;
            currentTimes.add(Calendar.MONTH, -1);
            day = day + currentTimes.getActualMaximum(Calendar.DAY_OF_MONTH);//获取日
        }
        if (month<0){
            month = (month + 12) % 12;//获取月
            year--;
        }
        long days = diff / (1000 * 60 * 60 * 24);
        long hours=(diff-days*(1000*60*60*24))/(1000* 60*60);//获取时 
                long minutes = (diff-days*(1000 * 60 * 60 * 24)-hours*(1000* 60 * 60))/(1000* 60);//获取分钟
        long s=(diff/1000-days*24*60*60-hours*60*60-minutes*60);//获取秒
        String CountTime=""+"year"+"年"+month+"月"+day+"天"+hours+"小时"+minutes+"分"+s+"秒";
        return CountTime;
    }

    // Date类型转Calendar类型
    public static Calendar dataToCalendar(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar;
    }

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤计算两个 `Date` 对象之间的时间差: 1. 使用 `.getTime()` 方法获取两个 `Date` 对象的时间戳(自1970年1月1日以来的毫秒数)。 2. 计算两个时间戳的差值(单位为毫秒)。 3. 将毫秒数转换为需要的时间单位,例如秒、分钟、小时等。 下面是一个示例代码: ```java import java.util.Date; public class TimeDifference { public static void main(String[] args) { Date date1 = new Date(); // 第一个时间点 try { Thread.sleep(1000); // 为了让两个时间点有一定时间差,我们在这里停顿了1秒钟 } catch (InterruptedException e) { e.printStackTrace(); } Date date2 = new Date(); // 第二个时间点 long difference = date2.getTime() - date1.getTime(); // 计算两个时间点之间的毫秒差值 System.out.println("Time difference in milliseconds: " + difference); // 将毫秒差值转换为秒、分钟、小时等 long seconds = difference / 1000; long minutes = seconds / 60; long hours = minutes / 60; long days = hours / 24; System.out.println("Time difference in seconds: " + seconds); System.out.println("Time difference in minutes: " + minutes); System.out.println("Time difference in hours: " + hours); System.out.println("Time difference in days: " + days); } } ``` 在这个示例中,我们计算了两个 `Date` 对象之间的毫秒差值,并将其转换为秒、分钟、小时和天数。请注意,我们在第一个时间点之后使用了 `Thread.sleep(1000)` 来让程序等待1秒钟,以便能够看到时间差的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值