Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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_Date_Calendar_Comparison - Fatal编程技术网

Java 如何比较两个日历日期?

Java 如何比较两个日历日期?,java,date,calendar,comparison,Java,Date,Calendar,Comparison,我有一个Java问题,需要检查一个项目是否过期。这应该检查项目是否至少有x个月(x是整数,可以设置为任何整数值) 为了重新分类,假设我有一包鸡蛋,我想检查一下我添加鸡蛋后是否已经1个月了(dateAdded) 我写了一个简单的比较,但似乎没有给出正确的答案。这是代码 public Boolean isEndOfLine() { Calendar today = Calendar.getInstance(); if(today.compareTo(dateAdded) >=

我有一个Java问题,需要检查一个项目是否过期。这应该检查项目是否至少有x个月(x是整数,可以设置为任何整数值)

为了重新分类,假设我有一包鸡蛋,我想检查一下我添加鸡蛋后是否已经1个月了(
dateAdded

我写了一个简单的比较,但似乎没有给出正确的答案。这是代码

public Boolean isEndOfLine() {
    Calendar today = Calendar.getInstance();
    if(today.compareTo(dateAdded) >= END_OF_LINE) {
        return true;
    } else {
        return false;
    }
}
行尾的值是一个整数12,即12个月。

如中所述 您不应该依赖compareTo返回的数字-您只知道,如果它大于0,则原始日期大于0

因此,创建一个新日期(过去的x个月)并与该日期进行比较。

如中所述 您不应该依赖compareTo返回的数字-您只知道,如果它大于0,则原始日期大于0

因此,创建一个新日期(过去的x个月)并与该日期进行比较。

如中所述 您不应该依赖compareTo返回的数字-您只知道,如果它大于0,则原始日期大于0

因此,创建一个新日期(过去的x个月)并与该日期进行比较。

如中所述 您不应该依赖compareTo返回的数字-您只知道,如果它大于0,则原始日期大于0


因此,创建一个新的日期(过去的x个月)并与之进行比较。

我的脑海中没有javadoc,但大致如下:

dateAdded.add(Calendar.Month, END_OF_LINE).compareTo(today) > 0

我头脑中没有javadoc,但大致是这样的:

dateAdded.add(Calendar.Month, END_OF_LINE).compareTo(today) > 0

我头脑中没有javadoc,但大致是这样的:

dateAdded.add(Calendar.Month, END_OF_LINE).compareTo(today) > 0

我头脑中没有javadoc,但大致是这样的:

dateAdded.add(Calendar.Month, END_OF_LINE).compareTo(today) > 0

如果参数表示的时间等于此日历对象表示的时间,则该方法返回0;或者,如果此日历的时间早于参数所表示的时间,则该值小于0;或者,如果此日历的时间晚于所表示的时间,则该值大于0

    import java.util.*;

    public class CalendarDemo {

       public static void main(String[] args) {

          // create two calendar at the different dates
          Calendar cal1 = new GregorianCalendar(2015, 8, 15);
          Calendar cal2 = new GregorianCalendar(2008, 1, 02);

          // compare the time values represented by two calendar objects.
          int i = cal1.compareTo(cal2);

          // return positive value if equals else return negative value
          System.out.println("The result is :"+i);

          // compare again but with the two calendars swapped
          int j = cal2.compareTo(cal);

          // return positive value if equals else return negative value
          System.out.println("The result is :" + j);

       }
    }

如果参数表示的时间等于此日历对象表示的时间,则该方法返回0;或者,如果此日历的时间早于参数所表示的时间,则该值小于0;或者,如果此日历的时间晚于所表示的时间,则该值大于0

    import java.util.*;

    public class CalendarDemo {

       public static void main(String[] args) {

          // create two calendar at the different dates
          Calendar cal1 = new GregorianCalendar(2015, 8, 15);
          Calendar cal2 = new GregorianCalendar(2008, 1, 02);

          // compare the time values represented by two calendar objects.
          int i = cal1.compareTo(cal2);

          // return positive value if equals else return negative value
          System.out.println("The result is :"+i);

          // compare again but with the two calendars swapped
          int j = cal2.compareTo(cal);

          // return positive value if equals else return negative value
          System.out.println("The result is :" + j);

       }
    }

如果参数表示的时间等于此日历对象表示的时间,则该方法返回0;或者,如果此日历的时间早于参数所表示的时间,则该值小于0;或者,如果此日历的时间晚于所表示的时间,则该值大于0

    import java.util.*;

    public class CalendarDemo {

       public static void main(String[] args) {

          // create two calendar at the different dates
          Calendar cal1 = new GregorianCalendar(2015, 8, 15);
          Calendar cal2 = new GregorianCalendar(2008, 1, 02);

          // compare the time values represented by two calendar objects.
          int i = cal1.compareTo(cal2);

          // return positive value if equals else return negative value
          System.out.println("The result is :"+i);

          // compare again but with the two calendars swapped
          int j = cal2.compareTo(cal);

          // return positive value if equals else return negative value
          System.out.println("The result is :" + j);

       }
    }

如果参数表示的时间等于此日历对象表示的时间,则该方法返回0;或者,如果此日历的时间早于参数所表示的时间,则该值小于0;或者,如果此日历的时间晚于所表示的时间,则该值大于0

    import java.util.*;

    public class CalendarDemo {

       public static void main(String[] args) {

          // create two calendar at the different dates
          Calendar cal1 = new GregorianCalendar(2015, 8, 15);
          Calendar cal2 = new GregorianCalendar(2008, 1, 02);

          // compare the time values represented by two calendar objects.
          int i = cal1.compareTo(cal2);

          // return positive value if equals else return negative value
          System.out.println("The result is :"+i);

          // compare again but with the two calendars swapped
          int j = cal2.compareTo(cal);

          // return positive value if equals else return negative value
          System.out.println("The result is :" + j);

       }
    }

这是可行的解决方案。使用JUNIT进行测试以确认结果

public Boolean isEndOfLine() {
    Calendar today = Calendar.getInstance();
    today.add(Calendar.MONTH, -END_OF_LINE);
    return today.compareTo(dateAdded) >= 0;
}

我用加法减去了今天行的
末尾。注意第3行的负号。然后我比较看它是否大于0。谢谢你的建议。

这是可行的解决方案。使用JUNIT进行测试以确认结果

public Boolean isEndOfLine() {
    Calendar today = Calendar.getInstance();
    today.add(Calendar.MONTH, -END_OF_LINE);
    return today.compareTo(dateAdded) >= 0;
}

我用加法减去了今天行的
末尾。注意第3行的负号。然后我比较看它是否大于0。谢谢你的建议。

这是可行的解决方案。使用JUNIT进行测试以确认结果

public Boolean isEndOfLine() {
    Calendar today = Calendar.getInstance();
    today.add(Calendar.MONTH, -END_OF_LINE);
    return today.compareTo(dateAdded) >= 0;
}

我用加法减去了今天行的
末尾。注意第3行的负号。然后我比较看它是否大于0。谢谢你的建议。

这是可行的解决方案。使用JUNIT进行测试以确认结果

public Boolean isEndOfLine() {
    Calendar today = Calendar.getInstance();
    today.add(Calendar.MONTH, -END_OF_LINE);
    return today.compareTo(dateAdded) >= 0;
}

我用加法减去了今天行的
末尾。注意第3行的负号。然后我比较看它是否大于0。谢谢您的建议。

这里是一些类似的示例代码,但使用的是2.3库

供参考:

  • Joda时间实例知道自己的时区
  • 该方法是智能的,可以处理和其他问题。您可能需要阅读它的源代码,以验证它的逻辑是否符合您的业务规则,即“x个月前数”的含义
/©2013巴西尔布尔克。此源代码可以由任何对此承担全部责任的人自由使用。
//导入org.joda.time.*;
//导入org.joda.time.format.*;
//最好明确指定时区,而不是依赖默认值。
//时区列表…http://joda-time.sourceforge.net/timezones.html  (不是最新的,详情请参阅第页)
DateTimeZone timeZone=DateTimeZone.forID(“欧洲/巴黎”);
int countMonths=2;
DateTime now=新的日期时间(时区);
//如果你想把一整天都包括在内,那就拨打“withTimeAtStartOfDay”获得一天中的第一刻。
DateTime someMonthsAgo=now.minusMonths(countMonths).withTimeAtStartOfDay();
DateTime DateAdd=新的日期时间(2013、5、6、7、8、9、时区);//例如,任意值。
//如果“dateAdded”发生在我们的目标日期时间“某个月前”,那么这包鸡蛋就过期了。
布尔值isEndOfLine=dateAdded.isBefore(几个月前);
转储到控制台

System.out.println(“now:+now”);
System.out.println(“someMonthsAgo:+someMonthsAgo”);
System.out.println(“dateAdded:+dateAdded”);
System.out.println(“isEndOfLine:+isEndOfLine”);
当运行时

现在:2014-01-08T21:36:11.179+01:00
几个月前:2013-11-08T00:00:00.000+01:00
添加日期:2013-05-06T07:08:09.000+02:00
伊森多夫林:是的

下面是一些类似的示例代码,但使用的是2.3库

供参考:

  • Joda时间实例知道自己的时区
  • 该方法是智能的,可以处理和其他问题。您可能需要读取其源代码