java 字符串时间 判断是否在30天内

时间是字符串类型时, 比较大小的时候,先要 转化成 “时间格式”,然后在进行比较。

字符串比较大小的规则:

      首先取出两个字符串的长度,比较较小的长度内,两者是否相等。

          若不相等,则直接返回该位置字符的ASCII码相减后的值。

          若各位置都相等,则将两个字符串长度的差值返回。

实现代码:



	/**
	 * 验证字符串时间,是否在30天内
	 * @param str
	 * @return
	 */
	public static boolean isValidDate(String str) {
		boolean convertSuccess=true;
		//时间格式定义
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		//获取当前时间日期--nowDate
		String nowDate = format.format(new Date());
		//获取30天前的时间日期--minDate
		Calendar calc = Calendar.getInstance();
		calc.add(Calendar.DAY_OF_MONTH, -30);
		String minDate = format.format(calc.getTime());
		try {
			//设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
			format.setLenient(false);
			//获取字符串转换后的时间--strDate
			String strDate = format.format(format.parse(str));
			//判断传的STR时间,是否在当前时间之前,且在30天日期之后-----测试的时候打印输出结果
//			System.out.println("nowDate.compareTo(strDate):"+ nowDate.compareTo(strDate));
//			System.out.println("strDate.compareTo(minDate):"+ strDate.compareTo(minDate));
			if (nowDate.compareTo(strDate) >= 0 && strDate.compareTo(minDate) >= 0){
				convertSuccess = true;
			}else{
				convertSuccess = false;
			}
		} catch (ParseException e) {
			convertSuccess=false;
		}
		return convertSuccess;
	}

单元测试代码:


    /**
     * 测试方法
     * @author: yanjianghua
     * @date: 2018/9/13 17:34
     */
    @Test
    public void TimeTest() {
        System.out.println("---单元测试开始---");
        boolean oldResult = TimeUtils.isValidDate("2018-10-15");
        System.out.println("---31天之前---2018-10-15:" + oldResult);
        boolean oldResult1 = TimeUtils.isValidDate("2018-10-16");
        System.out.println("---30天之前---2018-10-16:" + oldResult1);
        boolean nowResult = TimeUtils.isValidDate("2018-11-15");
        System.out.println("---今天---2018-11-15:" + nowResult);
        boolean futureResult = TimeUtils.isValidDate("2018-12-15");
        System.out.println("---一个月之后---2018-12-15:" + futureResult);
        boolean futureResult1 = TimeUtils.isValidDate("2019-12-15");
        System.out.println("---一个年之后---2019-11-15:" + futureResult1);
        System.out.println("---单元测试结束---");

    }

单元测试结果:

---单元测试开始---
nowDate.compareTo(strDate):1
strDate.compareTo(minDate):-1
---31天之前---2018-10-15:false
nowDate.compareTo(strDate):1
strDate.compareTo(minDate):0
---30天之前---2018-10-16:true
nowDate.compareTo(strDate):0
strDate.compareTo(minDate):1
---今天---2018-11-15:true
nowDate.compareTo(strDate):-1
strDate.compareTo(minDate):2
---一个月之后---2018-12-15:false
nowDate.compareTo(strDate):-1
strDate.compareTo(minDate):1
---一个年之后---2019-11-15:false
---单元测试结束---

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yjh44780791

一分耕耘一分收获

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值