使用Java代码如何判断一个Date是否在某个范围内?
下文笔者讲述使用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")); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。