以下是使用
Joda-Time
2.3库。
一种方法是使用简单的
isBefore
和
isAfter
方法对
DateTime
实例。顺便说一下,joda time中的date time在概念上类似于java.util.date(宇宙时间线上的时间点),但它包含时区。
另一种方法是在Joda时间内建立一个间隔。这个
contains
方法测试给定的日期时间是否在间隔所覆盖的时间范围内。间隔的开始是包含的,但终结点是独占的。这种方法被称为“半开”,象征性地
[)
.
在下面的代码示例中可以看到这两种方法。
将java.util.date实例转换为joda time
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 );
通过测试前后比较
boolean is1After2 = dateTime1.isAfter( dateTime2 );
boolean is2Before3 = dateTime2.isBefore( dateTime3 );
boolean is2Between1And3 = ( ( dateTime2.isAfter( dateTime1 ) ) && ( dateTime2.isBefore( dateTime3 ) ) );
使用间隔法而不是isafter/isbefore_
Interval interval = new Interval( dateTime1, dateTime3 );
boolean intervalContainsDateTime2 = interval.contains( dateTime2 );
转储到控制台
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 );
当运行时
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