Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 确定您的日期介于一组日期范围之间_Java_Jsp Tags - Fatal编程技术网

Java 确定您的日期介于一组日期范围之间

Java 确定您的日期介于一组日期范围之间,java,jsp-tags,Java,Jsp Tags,我有输入参数MMDD-MMDD,还有一个日期值示例是11月10日,所以现在我需要检查11月10日是否在MMDD-MMDD之间 目前,我有一个代码,如果格式是这样的0122-1123,它可以正常工作,但不适用于1123-0122 所以我做了一个解决方案,但它不起作用。当日期范围被翻转(1123-0122)时,我将向两者添加年份,并向0122添加加号年份,因此它将变为2019年11月23日至2020年1月22日,但我选择了一个日期(2019年1月21日),然后显然它没有被选中,请您帮助我确定给定日期

我有输入参数MMDD-MMDD,还有一个日期值示例是11月10日,所以现在我需要检查11月10日是否在MMDD-MMDD之间

目前,我有一个代码,如果格式是这样的0122-1123,它可以正常工作,但不适用于1123-0122

所以我做了一个解决方案,但它不起作用。当日期范围被翻转(1123-0122)时,我将向两者添加年份,并向0122添加加号年份,因此它将变为2019年11月23日至2020年1月22日,但我选择了一个日期(2019年1月21日),然后显然它没有被选中,请您帮助我确定给定日期是否在范围内,而不使用 一年


下面是一个使用LocalDate(使用问题中声明的变量)的解决方案


如果你需要帮助,你应该发布一些代码。我有,请检查请阅读,然后编辑你的问题。我们想帮助你;但是你必须帮助我们帮助你。除非我们了解你想要应用的规则,否则我们无法帮助你。您在帖子中列出的规则是,考虑到1123-0122的范围,不应选择2019年1月21日。如果您认为这是错误的(即,您希望选择2019年1月21日),请解释允许这一点的规则。您可以将验证分为两部分,从“开始”到12-31,从“开始”到“结束”时,从“开始”到“结束”
Date procDate = getProcessDateTime().getDate();
String dateRanges=getDateRange().trim();
int leftSetMonth = Integer.parseInt(dateRanges.substring(0, 2));
int leftSetDate = Integer.parseInt(dateRanges.substring(2, 4));
int rightSetMonth = Integer.parseInt(dateRanges.substring(5, 7));
int rightSetDate = Integer.parseInt(dateRanges.substring(7, 9));

Date leftCollectiveDate = new Date(procDate.getYear(), leftSetMonth, leftSetDate);

Date rightCollectiveDate = new Date(procDate.getYear(), rightSetMonth, rightSetDate);

if (leftCollectiveDate.isAfter(rightCollectiveDate)) {
    rightCollectiveDate = new Date(procDate.getYear() + 1, rightSetMonth, rightSetDate);
}

if (leftCollectiveDate.isSameOrBefore(procDate) && rightCollectiveDate.isSameOrAfter(procDate)) {
    result = Bool.TRUE;
    return result;
}
LocalDate localDate = Instant.ofEpochMilli(procDate.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();

LocalDate fromDate = LocalDate.of(localDate.getYear(), leftSetMonth, leftSetDate);
LocalDate toDate = LocalDate.of(localDate.getYear(), rightSetMonth, rightSetDate);

if (toDate.isBefore(LocalDate.now())) {
  toDate = toDate.plusYears(1);
}

if (localDate.isAfter(from) && localDate.isBefore(to)) {
  System.out.println(localDate + " is valid");
} else {
  System.out.println("Out of range");
}