Java 如何比较两个日历日期?
我有一个Java问题,需要检查一个项目是否过期。这应该检查项目是否至少有x个月(x是整数,可以设置为任何整数值) 为了重新分类,假设我有一包鸡蛋,我想检查一下我添加鸡蛋后是否已经1个月了(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) >=
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时间实例知道自己的时区
- 该方法是智能的,可以处理和其他问题。您可能需要读取其源代码