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

字符串比较大小的规则:

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

若不相等,则直接返回该位置字符的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

---单元测试结束---

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐