Nat*_*ger 243
这可能更具可读性:
Date min, max; // assume these are set to something
Date d; // the date in question
return d.after(min) && d.before(max);
Run Code Online (Sandbox Code Playgroud)
Pet*_*rey 115
如果您不知道最小值/最大值的顺序
Date a, b; // assume these are set to something
Date d; // the date in question
return a.compareTo(d) * d.compareTo(b) > 0;
Run Code Online (Sandbox Code Playgroud)
如果您希望范围包含在内
return a.compareTo(d) * d.compareTo(b) >= 0;
Run Code Online (Sandbox Code Playgroud)
Jas*_*hen 39
像这样:
Date min, max; // assume these are set to something
Date d; // the date in question
return d.compareTo(min) >= 0 && d.compareTo(max) <= 0;
Run Code Online (Sandbox Code Playgroud)
您可以使用>,而不是>=和<,而不是<=从意识中排除端点"之间."
Bas*_*que 11
这里有几种使用Joda-Time 2.3库的方法.
一种方法是在DateTime实例上使用simple isBefore和isAfter方法.顺便说一句,Joda-Time中的DateTime在概念上类似于java.util.Date(Universe时间轴上的时刻)但包括时区.
另一种方法是在Joda-Time中构建一个Interval.该contains方法测试给定的DateTime是否在Interval所涵盖的时间范围内发生.Interval的开头是包含的,但端点是独占的.这种方法被称为"半开放",象征性地[).
请参阅以下代码示例中的两种方法.
将java.util.Date实例转换为Joda-Time DateTime实例.只需将Date实例传递给DateTime的构造函数即可.实际上,您还应该传递特定DateTimeZone对象,而不是依赖JVM的默认时区.
DateTime dateTime1 = new DateTime( new java.util.Date() ).minusWeeks( 1 );
DateTime dateTime2 = new DateTime( new java.util.Date() );
DateTime dateTime3 = new DateTime( new java.util.Date() ).plusWeeks( 1 );
Run Code Online (Sandbox Code Playgroud)
比较之前/之后的测试......
boolean is1After2 = dateTime1.isAfter( dateTime2 );
boolean is2Before3 = dateTime2.isBefore( dateTime3 );
boolean is2Between1And3 = ( ( dateTime2.isAfter( dateTime1 ) ) && ( dateTime2.isBefore( dateTime3 ) ) );
Run Code Online (Sandbox Code Playgroud)
使用Interval方法代替isAfter/isBefore ...
Interval interval = new Interval( dateTime1, dateTime3 );
boolean intervalContainsDateTime2 = interval.contains( dateTime2 );
Run Code Online (Sandbox Code Playgroud)
转储到控制台......
System.out.println( "DateTimes: " + dateTime1 + " " + dateTime1 + " " + dateTime1 );
System.out.println( "is1After2 " + is1After2 );
System.out.println( "is2Before3 " + is2Before3 );
System.out.println( "is2Between1And3 " + is2Between1And3 );
System.out.println( "intervalContainsDateTime2 " + intervalContainsDateTime2 );
Run Code Online (Sandbox Code Playgroud)
跑的时候......
DateTimes: 2014-01-22T20:26:14.955-08:00 2014-01-22T20:26:14.955-08:00 2014-01-22T20:26:14.955-08:00
is1After2 false
is2Before3 true
is2Between1And3 true
intervalContainsDateTime2 true
Run Code Online (Sandbox Code Playgroud)
另外一个选项
min.getTime() <= d.getTime() && d.getTime() <= max.getTime()
Run Code Online (Sandbox Code Playgroud)
日期之间包括终点可以写成
public static boolean isDateInBetweenIncludingEndPoints(final Date min, final Date max, final Date date){
return !(date.before(min) || date.after(max));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
177697 次 |
| 最近记录: |