使用Java代码如何判断一个Date是否在某个范围内?

乔欣 Java经验 发布时间:2023-02-07 22:44:17 阅读数:12690 1
下文笔者讲述使用java代码检测Date是否在某个指定范围的方法分享,如下所示

检测Date是否在指定范围内方法分享

实现思路:
   使用Date.before()和Date.after()即可检测一个日期是否在指定范围内
   如:
     if (d1.before(d2.getTime())
		&& d1.after(d3.getTime())) {
package com.java265.date;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
public class DateValidator {
 
	public boolean isThisDateWithin3MonthsRange(String dateToValidate,
			String dateFromat) {
 
		SimpleDateFormat sdf = new SimpleDateFormat(dateFromat);
		sdf.setLenient(false);
		try {
 
			// if not valid, it will throw ParseException
			Date date = sdf.parse(dateToValidate);
 
			// current date after 3 months
			Calendar currentDateAfter3Months = Calendar.getInstance();
			currentDateAfter3Months.add(Calendar.MONTH, 3);
 
			// current date before 3 months
			Calendar currentDateBefore3Months = Calendar.getInstance();
			currentDateBefore3Months.add(Calendar.MONTH, -3);
 
			/*************** verbose ***********************/
			System.out.println("\n\ncurrentDate : "
					+ Calendar.getInstance().getTime());
			System.out.println("currentDateAfter3Months : "
					+ currentDateAfter3Months.getTime());
			System.out.println("currentDateBefore3Months : "
					+ currentDateBefore3Months.getTime());
			System.out.println("dateToValidate : " + dateToValidate);
			/************************************************/
			
			if (date.before(currentDateAfter3Months.getTime())
					&& date.after(currentDateBefore3Months.getTime())) {
 
				//ok everything is fine, date in range
				return true;
 
			} else {
 
				return false;
 
			}
 
		} catch (ParseException e) {
 
			e.printStackTrace();
			return false;
		}
 
	}
 
}


//测试案例

package com.java265.test;
 
import org.junit.*;
import com.java265.date.DateValidator;
import static org.junit.Assert.*;
 
public class DateValidatorRangeTest {
 
	private DateValidator dateValidator;
 
	@Before
	public void init() {
		dateValidator = new DateValidator();
	}
 
	@Test
	public void test1() {
		assertTrue(dateValidator.isThisDateWithin3MonthsRange("31/01/2022", "dd/MM/yyyy"));
	}
 
	@Test
	public void test2() {
		assertFalse(dateValidator.isThisDateWithin3MonthsRange("31/01/2011", "dd/MM/yyyy"));
	}
	
	@Test
	public void test3() {
		assertTrue(dateValidator.isThisDateWithin3MonthsRange("20/02/2022", "dd/MM/yyyy"));
	}
	
	@Test
	public void test4() {
		assertFalse(dateValidator.isThisDateWithin3MonthsRange("21/05/2022", "dd/MM/yyyy"));
	}
}
版权声明

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

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

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

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

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者