Java计算年月日时分秒时间差(两个时间相减)

  1.   //测试主方法
  2.  public static void main(String[] args) {
  3.          Date currentTime = df.parse("2004-03-26 13:31:40");   //当前系统时间   
  4.          Date firstTime = df.parse("2004-01-02 11:30:24");     //查询的数据时间
  5.          String str=getTime(currentTime ,firstTime );
  6.          System.out.println("获取的年月日时分秒时间差为:"+str);
  7.   }
  8.   //获取时间差方法    
  9.   public static String getTime(Date currentTime,Date firstTime){
  10.           long diff = currentTime.getTime() - firstTime.getTime();//这样得到的差值是微秒级别
  11.           Calendar  currentTimes =dataToCalendar(currentTime);//当前系统时间转Calendar类型
  12.           Calendar  firstTimes =dataToCalendar(firstTime);//查询的数据时间Calendar类型
  13.           int year = currentTimes.get(Calendar.YEAR) - firstTimes.get(Calendar.YEAR);//获取年
  14.           int month = currentTimes.get(Calendar.MONTH) - firstTimes.get(Calendar.MONTH);
  15.           int day = currentTimes.get(Calendar.DAY_OF_MONTH) - firstTimes.get(Calendar.DAY_OF_MONTH); 
  16.           if (day < 0) {
  17.              month -= 1;
  18.              currentTimes.add(Calendar.MONTH, -1);
  19.              day = day + currentTimes.getActualMaximum(Calendar.DAY_OF_MONTH);//获取日
  20.           }
  21.           if (month < 0) {
  22.              month = (month + 12) % 12;//获取月
  23.              year--;
  24.           }      
  25.           long days = diff / (1000 * 60 * 60 * 24);           
  26.           long hours = (diff-days*(1000 * 60 * 60 * 24))/(100060 * 60); //获取时 
  27.           long minutes = (diff-days*(1000 * 60 * 60 * 24)-hours*(100060 * 60))/(100060);  //获取分钟
  28.           long s=(diff/1000-days*24*60*60-hours*60*60-minutes*60);//获取秒
  29.           String CountTime=""+"year"+"年"+month+"月"+day+"天"+hours+"小时"+minutes+"分"+s+"秒";
  30.           return CountTime;
  31.     }  
  32.     //Date类型转Calendar类型
  33.     public static Calendar dataToCalendar(Date date) {
  34.           Calendar calendar = Calendar.getInstance();
  35.           calendar.setTime(date);
  36.           return calendar;
  37.     }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小志的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值