java代码如何检测日期是否有效呢?
下文笔者讲述使用java代码检测日期有效的方法分享,如下所示
验证日期有效性
验证日期有效性:
我们需从验证日期字符串是否按照我们输入的格式
并且数据是否符合日期要求
验证日期有效性的实现思路:
使用try catch将日期转换为date对象
例:
检测日期有效性
package com.java265.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateValidator { public boolean isThisDateValid(String dateToValidate, String dateFromat){ if(dateToValidate == null){ return false; } SimpleDateFormat sdf = new SimpleDateFormat(dateFromat); sdf.setLenient(false); try { //Date转换失败,则报相应的异常 Date date = sdf.parse(dateToValidate); System.out.println(date); } catch (ParseException e) { e.printStackTrace(); return false; } return true; } }
单元测试
package com.java265.test;
import org.junit.*;
import com.java265.date.DateValidator;
import static org.junit.Assert.*;
public class DateValidatorTest {
private DateValidator dateValidator;
@Before
public void init() {
dateValidator = new DateValidator();
}
@Test
public void testDateIsNull() {
assertFalse(dateValidator.isThisDateValid(null, "dd/MM/yyyy"));
}
@Test
public void testDayIsInvalid() {
assertFalse(dateValidator.isThisDateValid("32/02/2022", "dd/MM/yyyy"));
}
@Test
public void testMonthIsInvalid() {
assertFalse(dateValidator.isThisDateValid("31/20/2022", "dd/MM/yyyy"));
}
@Test
public void testYearIsInvalid() {
assertFalse(dateValidator.isThisDateValid("31/20/2022", "dd/MM/yyyy"));
}
@Test
public void testDateFormatIsInvalid() {
assertFalse(dateValidator.isThisDateValid("2022/02/20", "dd/MM/yyyy"));
}
@Test
public void testDateFeb29_2022() {
assertTrue(dateValidator.isThisDateValid("29/02/2022", "dd/MM/yyyy"));
}
@Test
public void testDateFeb29_2011() {
assertFalse(dateValidator.isThisDateValid("29/02/2022", "dd/MM/yyyy"));
}
@Test
public void testDateFeb28() {
assertTrue(dateValidator.isThisDateValid("28/02/2022", "dd/MM/yyyy"));
}
@Test
public void testDateIsValid_1() {
assertTrue(dateValidator.isThisDateValid("31/01/2022", "dd/MM/yyyy"));
}
@Test
public void testDateIsValid_2() {
assertTrue(dateValidator.isThisDateValid("30/03/2022", "dd/MM/yyyy"));
}
@Test
public void testDateIsValid_3() {
assertTrue(dateValidator.isThisDateValid("30/03/2022", "dd/MM/yyyy"));
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


