转:Java 计算2个时间相差多少年,多少个月,多少天的几种方式
日期比较对象 DayCompare
代码用到了 lombok ,如果不用,其实就是把getter / setter
方法自己写一遍,还有构造方法。
- @Data
- @Builder
- public static class DayCompare{
- private int year;
- private int month;
- private int day;
- }
- /**
- * 计算2个日期之间相差的 相差多少年月日
- * 比如:2011-02-02 到 2017-03-02 相差 6年,1个月,0天
- * @param fromDate
- * @param toDate
- * @return
- */
- public static DayCompare dayComparePrecise(Date fromDate,Date toDate){
- Calendar from = Calendar.getInstance();
- from.setTime(fromDate);
- Calendar to = Calendar.getInstance();
- to.setTime(toDate);
- int fromYear = from.get(Calendar.YEAR);
- int fromMonth = from.get(Calendar.MONTH);
- int fromDay = from.get(Calendar.DAY_OF_MONTH);
- int toYear = to.get(Calendar.YEAR);
- int toMonth = to.get(Calendar.MONTH);
- int toDay = to.get(Calendar.DAY_OF_MONTH);
- int year = toYear - fromYear;
- int month = toMonth - fromMonth;
- int day = toDay - fromDay;
- return DayCompare.builder().day(day).month(month).year(year).build();
- }
- /**
- * 计算2个日期之间相差的 以年、月、日为单位,各自计算结果是多少
- * 比如:2011-02-02 到 2017-03-02
- * 以年为单位相差为:6年
- * 以月为单位相差为:73个月
- * 以日为单位相差为:2220天
- * @param fromDate
- * @param toDate
- * @return
- */
- public static DayCompare dayCompare(Date fromDate,Date toDate){
- Calendar from = Calendar.getInstance();
- from.setTime(fromDate);
- Calendar to = Calendar.getInstance();
- to.setTime(toDate);
- //只要年月
- int fromYear = from.get(Calendar.YEAR);
- int fromMonth = from.get(Calendar.MONTH);
- int toYear = to.get(Calendar.YEAR);
- int toMonth = to.get(Calendar.MONTH);
- int year = toYear - fromYear;
- int month = toYear * 12 + toMonth - (fromYear * 12 + fromMonth);
- int day = (int) ((to.getTimeInMillis() - from.getTimeInMillis()) / (24 * 3600 * 1000));
- return DayCompare.builder().day(day).month(month).year(year).build();
- }
- /**
- * 计算2个日期相差多少年
- * 列:2011-02-02 ~ 2017-03-02 大约相差 6.1 年
- * @param fromDate
- * @param toDate
- * @return
- */
- public static String yearCompare(Date fromDate,Date toDate){
- DayCompare result = dayComparePrecise(fromDate, toDate);
- double month = result.getMonth();
- double year = result.getYear();
- //返回2位小数,并且四舍五入
- DecimalFormat df = new DecimalFormat("######0.0");
- return df.format(year + month / 12);
- }
转自:https://www.sojson.com/blog/260.html
转:Java 计算2个时间相差多少年,多少个月,多少天的几种方式的更多相关文章
- java计算两个时间相差(天、小时、分钟、秒)
public static Long dateDiff(String startTime, String endTime, String format, String str) { // 按照传入的格 ...
- java计算两个日期相差多少天
java计算两个日期相差多少天 public class DateUtil{ public static int betweenDays(Date startDate, Date endDate ) ...
- Java集合(九)哈希冲突及解决哈希冲突的4种方式
Java集合(九)哈希冲突及解决哈希冲突的4种方式 一.哈希冲突 (一).产生的原因 哈希是通过对数据进行再压缩,提高效率的一种解决方法.但由于通过哈希函数产生的哈希值是有限的,而数据可能比较多,导致 ...
- PHP 获取两个日期相差多少年,多少月,多少天,多少小时,并填充数组
PHP 获取两个日期相差多少年,多少月,多少天,多少小时,并填充数组 <?php /** * 获取两个日期相差多少年,多少月,多少天,多少小时,并填充数组 * @param [type] $st ...
- java 判断两个时间相差的天数
1.实现目标 输入:两个日期 输出:两个日期相差的天数 2.代码实现 方法1: 通过Calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的 ...
- Java判断两个时间相差的天数
1.实现目标 输入:两个日期 输出:两个日期相差的天数 2.代码实现 方法1: 通过Calendar类的日期比较.注意:这里需要考虑一下: 日期是跨年份的,如一个是2012年,一个是2015年的 ...
- js计算两个时间相差天数
//两个时间相差天数 兼容firefox chrome function datedifference(sDate1, sDate2) { //sDate1和sDate2是2006-12 ...
- Java计算两个时间的天数差与月数差 LocalDateTime
/** * 计算两个时间点的天数差 * @param dt1 第一个时间点 * @param dt2 第二个时间点 * @return int,即要计算的天数差 */ public stat ...
- java多线程系类:基础篇:02常用的实现多线程的两种方式
本章,我们学习"常用的实现多线程的2种方式":Thread 和 Runnable.之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多 ...
随机推荐
- struts2.1.6存在中文乱码的bug
如题,后续版本中已解决:可以通过添加filter的方式解决.
- yield让代码更加简洁
不能传入out或ref public IEnumerable<Shop> GetShop() { ; i < ; i++) { yield return new Shop { ID ...
- 将npm修改为cnpm
1.更改npm的源地址 检测是否更改成功 2.用cnpm代替npm npm常用命令: npm更新:npm install -g npm npm初始化生成package.json: npm init ...
- [转]深入理解/proc目录
Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过 ...
- #1003 Max Sum
http://acm.hdu.edu.cn/showproblem.php?pid=1003 给你一串数列,让你求出其中 一段连续的子数列 并且 该子数列所有数字之和最大,输出该子数列的和.起点与终点 ...
- HTTP常见状态码(404、400、500)等错误
一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 详细分解: 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明 ...
- IOS: Xcode报 Undecleared selector Warning错误的解决方法
Undecleared selector Warning 是编译器报的,特别是升级到IOS7 默认PROJ设定的时候,会出现这种问题,如果从代码上看语法完全没有问题,那么就可以在Xcode里面设置禁 ...
- CI框架3.x 之实现前后端分离
一.建立合理的目录结构 admin与home为后台和前台的控制器和模板文件夹 二.定义前后台视图路径常量 在constants.php中添加如下代码: //定义前台视图路径常量 define('HOM ...
- MHA的MySQL高可用方案实战
功能: 1)master的故障切换(keepalived VIP的飘移) 2)主从复制角色的提升和重新转向 其中master 对外提供写服务,备选master2(实际的slave提供读服务,slave ...
- JavaScript day4(条件语句和条件运算符)
1. 布尔值 布尔值要么是 true 要么是 false .它非常像电路开关, true 是“开”,false 是“关”.这两种状态是互斥的. 2. if 语句 if 语句用于在代码中做条件判断.关键 ...