很对时候会遇到时间间隔的计算,对于jdk中没有提供足够的方法,我按照对把时间取为long,做减法最后除相应的转换比例这样做出来的存在问题,我经过网络查找,从某一位网友的博客(http://1985wanggang.blog.163.com/blog/static/7763833201371341545546/)中发现了一种好的方式,我在此记录一下,并把它分享出来。
通过阅读这位网友的记录,我简单把他写的这两个方法记录一下,以备不时之需:
首先对于jdk提供的时间的处理所带来的先天不足,joda-time这个jar就是一个不错的补充,以前我都是用jdk中的时间处理,发现有时候有些时间的处理需要转换过来去逻辑处理再转换过来去显示,这个方式太浪费时间以及效率低下,这个joda带来的好处是显而易见的,那就是把一些常见的日期的出来封装为api了,就是一个工具吧,拿来用就好,什么都别问。
我就简单总结一些那个网友的方式:他的test3()这个方法就是最简单处理时间间隔这个计算的:先新建一个时间间隔对象
Interval interval=new Interval(date.getTime(),date2.getTime());
然后获取时间间隔:
Period p = interval.toPeriod();
System.out.println("时间相差:"+p.getDays()+" 天 " + p.getHours()+ " 小时 "+p.getMinutes()+" 分钟"+p.getSeconds()+" 秒");
对于test2()处理时间:
充分利用提供的Days,Hours,Minutes,Seconds的时间间隔计算的方法,这个的时间的计算的参数都是joda支持的DateTime,然后对其进行计算调用相应的时间间隔计算方法。
我把他的代码复于此:
DateTime dt1 = new DateTime(d1);
DateTime dt2 = new DateTime(d2);
System.out.print("时间相差:");
System.out.print(Days.daysBetween(dt1, dt2).getDays() + " 天 ");
System.out.print(Hours.hoursBetween(dt1, dt2).getHours() % 24 + " 小时 ");
System.out.print(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60 + " 分钟 ");
System.out.print(Seconds.secondsBetween(dt1, dt2).getSeconds() % 60+ " 秒.");
再次感谢那位作者,我这个把他的博客弄过来,只是为了学习和记录,仅此而已。