Java 补全两个年份之间缺失的年份\计算两个日期相差年数

  //计算两个日期相差年数
  public static int yearDateDiff(Date startDate,Date endDate){
     Calendar calBegin = Calendar.getInstance(); //获取日历实例
     Calendar calEnd = Calendar.getInstance();
     calBegin.setTime(startDate);
     calEnd.setTime(endDate);
     return calEnd.get(Calendar.YEAR) - calBegin.get(Calendar.YEAR);
  }

Java 功能代码:

        String startYear = entity.getString("startYear");
		String endYear = entity.getString("endYear");
		if(StringUtils.isEmpty(startYear)){
			return Result.error("开始年份不能为空");
		}
		if(StringUtils.isEmpty(endYear)){
			LocalDateTime localDateTime = LocalDateTime.now();
			endYear = localDateTime.format(DateTimeFormatter.ofPattern("yyyy"));
		}
		// 日期大小比较
		SimpleDateFormat format = new SimpleDateFormat("yyyy");
		Date startDate = null;
		Date endDate = null;
		try {
			startDate = format.parse(startYear);
			endDate = format.parse(endYear);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			logger.error(e.getMessage());
			return Result.error("年份转换异常");
		}
		
		// 判断年份大小
		if(!endDate.after(startDate)){
			return Result.error("结束年份必须大于或等于开始年份");
		}
		
		List<String> years = this.getYear(startYear, endYear);
/**
	 * 补全年份
	 * @param startYear
	 * @param endYear
	 * @return
	 */
	public List<String> getYear(String startYear, String endYear){
		List<String> year = new ArrayList();
		SimpleDateFormat format = new SimpleDateFormat("yyyy");
		try{
			Date dBegin = format.parse(startYear);
			Date dEnd = format.parse(endYear);
			
			year.add(format.format(dBegin));
			
			Calendar calBegin = Calendar.getInstance();
		    // 使用给定的 Date 设置此 Calendar 的时间
		    calBegin.setTime(dBegin);
		    Calendar calEnd = Calendar.getInstance();
		    // 使用给定的 Date 设置此 Calendar 的时间
		    calEnd.setTime(dEnd);
		    // 测试此日期是否在指定日期之后
		    while (dEnd.after(calBegin.getTime())) {
		        // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
		        calBegin.add(Calendar.YEAR, 1);
		        year.add(format.format(calBegin.getTime()));
		    }
		}catch(Exception e){
			return year;
		}
		return year;
	}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值