判断任意两个时间间隔是否超过3个自然月

/**
* 时间差值校验
*
* @param dates 时间数组
* @return 对比结果
*/
private Boolean checkMonth(Date… dates) {
if (dates.length > 1) {
for (int i = 0; i < dates.length; i++) {
for (int j = 1; j < dates.length; j++) {
Boolean month = getMonth(dates[i], dates[j]);
if (month) {
return Boolean.TRUE;
}
}
}
}
return Boolean.FALSE;
}

/**
 * 计算两个时间相差是否在3个月内
 *
 * @param start 开始时间
 * @param end   结束时间
 * @return 对比结果true是在3个月内,false为不在3个月内
 */
private Boolean getMonth(Date start, Date end) {
    if (start.after(end)) {
        Date t = start;
        start = end;
        end = t;
    }
    Calendar c1 = Calendar.getInstance();
    Calendar c2 = Calendar.getInstance();
    c1.setTime(start);
    c2.setTime(end);
    c1.add(Calendar.MONTH, 3);
    if (c1.getTimeInMillis() <= c2.getTimeInMillis()) {
        return Boolean.FALSE;
    }
    return Boolean.TRUE;
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
```java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; public class DateInterval { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入第一个日期(格式:yyyy-MM-dd):"); String dateString1 = scanner.nextLine(); System.out.print("请输入第二个日期(格式:yyyy-MM-dd):"); String dateString2 = scanner.nextLine(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { Date date1 = dateFormat.parse(dateString1); Date date2 = dateFormat.parse(dateString2); if (date1.before(date2)) { System.out.println("第一个日期早于第二个日期"); } else if (date1.after(date2)) { System.out.println("第一个日期晚于第二个日期"); } else { System.out.println("两个日期相同"); } Calendar calendar1 = Calendar.getInstance(); calendar1.setTime(date1); Calendar calendar2 = Calendar.getInstance(); calendar2.setTime(date2); long interval = (date2.getTime() - date1.getTime()) / (24 * 60 * 60 * 1000); System.out.println("两个日期间隔的天数为:" + interval); int weekInterval = (int) (interval / 7); if (interval % 7 != 0) { System.out.println("两个日期间隔的周数为:" + weekInterval); } else { System.out.println("两个日期间隔的周数为:" + weekInterval + "(不足一周按0计算)"); } } catch (ParseException e) { e.printStackTrace(); } } } ``` 运行效果: ``` 请输入第一个日期(格式:yyyy-MM-dd):2021-05-01 请输入第二个日期(格式:yyyy-MM-dd):2021-05-07 第一个日期早于第二个日期 两个日期间隔的天数为:6 两个日期间隔的周数为:0(不足一周按0计算) ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值