计算两个时间相差天数
2017-01-06 13:52
507 查看
具体代码实现: 方法1.通过Calendar类的日期比较。要考虑跨年的问题以及年份的平闰
/** * date2比date1多的天数 * * @param date1 * @param date2 * @return */
public static int differentDays(Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(date1); Calendar cal2 = Calendar.getInstance(); cal2.setTime(date2); int day1 = cal1.get(Calendar.DAY_OF_YEAR); int day2 = cal2.get(Calendar.DAY_OF_YEAR); int year1 = cal1.get(Calendar.YEAR); int year2 = cal2.get(Calendar.YEAR); if (year1 != year2) { int timeDistance = 0; for (int i = year1; i < year2; i++) { if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) { timeDistance += 366; } else { timeDistance += 365; } } return timeDistance + (day2 - day1); } else { System.out.println("判断day2 - day1 : " + (day2 - day1)); return day2 - day1; } }方法2.直接通过计算两个日期的毫秒数,他们的差除以一天的毫秒数,即可得到我们想要的两个日期相差的天数。
/** * 通过时间秒毫秒数判断两个时间的间隔 * * @param date1 * @param date2 * @return */ public static int differentDaysByMillisecond(Date date1, Date date2) { int days = (int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)); return days; }
两种实现方式的比较:方式一:只是通过日期来进行比较两个日期的相差天数的比较,没有精确到相差到一天的时间。如果是只是纯粹通过日期(年月日)来比较的话就是方式一。
方式二:是通过计算两个日期相差的毫秒数来计算两个日期的天数差的。一样会有一个小问题,就是当他们相差是23个小时的时候,它就不算一天了。如下面的两个日期
2017-1-1 20:00:00
2017-1-2 1:00:00
两种方式的不同了,在具体时间相差不到24小时时,方式2的方式不算一天,而方式1是通过日期(年月日)来判断的,所以算相差一天
相关文章推荐
- 取消普通域用户帐号加域权限&授权特定普通域用户加域权 ...
- 类、抽象类,接口
- python实现快速排序
- 【Java学习之代码学习】 Prog37_企业发放的奖金
- git常用命令: reset, stash
- 使用T4模板生成不同部署环境下的配置文件
- 浅谈web网站架构演变过程
- 并行编程之Java内存模式
- UnityShader实战 之 体积光的实现
- mysql学习
- MyBatis/Ibatis中#和$的区别
- Android中AnimationDrawable,Animator和Animation
- zxing的使用及优化
- 探索Lua5.2内部实现:Function
- "XX cannot be resolved to a type "eclipse报错及解决说明
- 解决【unity3d】播放视频的两种操作方式
- CSS选择器性能分析
- CSS3 选择器——基本选择器
- 我的 Android 开发实战经验总结
- Understanding Chan Chan's in Go