java代码如何检测日期是否有效呢?

乔欣 Java经验 发布时间:2023-02-03 16:45:50 阅读数:18489 1
下文笔者讲述使用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"));
	}
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202302/16754140485641.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者