java7 计算日期相隔天数的最优方法
来源:互联网 发布:中科院下属企业知乎 编辑:程序博客网 时间:2024/06/07 20:32
环境
jdk : 1.7
因为java8
中官网已经有封装好的方法,所以我这个方法适用于java8
之前的版本.
比如:java7
需求
计算相隔天数的情况有两种:
①不考虑时分秒.
②考虑时分秒的.
举例:
date1="2017-06-18 21:28:28", date2="2017-06-19 01:28:28".
对于第一种情况,不考虑时分秒的话,上面date1和date2相差的天数为1.
对于第二种情况,考虑时分秒的话,上面date1和date2相差的天数为0.
好了直接上代码:
/** * 获取两个日期之间的天数 * @param date1 * @param date2 * @param isExactMillisecond 是否精确到毫秒 比如2017年6月1号 21:21:28,2017年6月2号 20:21:28,true:相差天数为0,false相差天数为1 * @author yutao * @return date2大于date1的话,返回正数,否则返回负数. * @date 2017年6月19日下午6:00:21 */ public static int getDaysDifference(Date date1, Date date2, boolean isExactMillisecond){ /*Date temp;//如果不区分date2和date1谁大谁小,可以解开注释 if(date1.getTime() > date2.getTime()){ temp = date2; date2=date1; date1=temp; }*/ int days = 1; Calendar cal = Calendar.getInstance(); cal.setTime(date1); int year1 = cal.get(Calendar.YEAR); int dayOfYear1 = cal.get(Calendar.DAY_OF_YEAR); cal.clear(); cal.setTime(date2); int year2 = cal.get(Calendar.YEAR); int dayOfYear2 = cal.get(Calendar.DAY_OF_YEAR); long diffTime = date2.getTime() - date1.getTime(); if(isExactMillisecond){//精准考虑 return (int) (diffTime / (1000*3600*24)); } //不考虑时间,只考虑日期 if(year1==year2 && dayOfYear1 == dayOfYear2){//同一天 days = 0; }else{ days = (int) (diffTime / (1000*3600*24)); if(diffTime >= (1000*3600*24)){//不同天,且大于一天 if(diffTime % (1000*3600*24) > 0){ //假设为1.5天,就算2天 days++; } } } return days; }
如有错误,欢迎指出.
阅读全文
0 0
- java7 计算日期相隔天数的最优方法
- 计算日期相隔天数
- 计算个日期之间相隔的天数
- 计算两个日期内相隔的天数
- 计算两个日期相隔的天数
- js 计算日期相隔天数
- C#计算日期相隔天数
- 计算两个日期相隔天数
- 计算两个日期相隔天数
- 日期之 相隔天数计算
- 计算某个日期与当前日期相隔的天数
- calendar 计算两个日期之间相隔的天数
- Android 计算两个日期之间相隔的天数
- C/C++完成两个日期之间相隔天数的计算
- Java 计算日期相隔天数和相差的小时数
- <Javascript>js 计算日期相隔天数
- 通过两个不同日期计算相隔天数
- Oracle相隔天数日期相减计算
- MySQL-5.7.19-winx64解压版的下载与安装
- 设计模式之抽象工厂模式
- Redis 事务是原子性的吗
- 重新认识HTML系列005——内容模型
- javascript继承(二)借用构造函数的方式继承(类继承)
- java7 计算日期相隔天数的最优方法
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.4基本类型与运算(4.4.5-4.4.10)
- timer事件执行
- Android地理位置获取的那些坑
- Learning-Based View Synthesis for Light Field Cameras
- 经典sql练习题
- hibernate中的对象有三种状态: 瞬时状态 (Transient),持久状态 (Persistent),
- Java设计模式详解之一单例模式
- 过网络验证的案例2017-0619