我需要检查给定的时间戳是否为今天。我正在使用Joda-Time。有没有一种方法或简单的方式来检查这个?哪个Joda-Time类更适合这样?LocalDate?DateTime
发布于 2014-02-10 13:46:49
日期可以通过单个语句进行比较,所以您需要一个特殊的函数。
当 dateTime**is一个** DateTime()的对象时为
if((dateTime.toLocalDate()).equals(new LocalDate()))当 java.util.date的对象为时为
if((new DateTime(date).toLocalDate()).equals(new LocalDate()))哪个Joda-time类更适合这样?LocalDate?DateTime?
理解你需要知道什么是LocalDate和DateTime。
LocalDate()是一个不可变的datetime类,表示不带时区的日期。所以没有时间段。
DateTime()是不可修改的datetime类的标准实现。它具有Date的所有属性,包括date、time和timezone。
因此,如果你需要比较日期和时间,最好使用datetime,如果你只需要检查日期,你必须使用localDate,因为如果使用.equal操作符,datetime将产生一个false,除非两个对象包含秒部分的时间相同。
发布于 2017-03-01 08:19:07
这里有一些简单的方法来检查DateTime是今天、明天还是昨天:
public boolean isToday(DateTime time) {
return LocalDate.now().compareTo(new LocalDate(time)) == 0;
}
public boolean isTomorrow(DateTime time) {
return LocalDate.now().plusDays(1).compareTo(new LocalDate(time)) == 0;
}
public boolean isYesterday(DateTime time) {
return LocalDate.now().minusDays(1).compareTo(new LocalDate(time)) == 0;
}发布于 2014-02-10 14:06:05
一种可能性是创建一个覆盖所讨论的全天的时间间隔,然后检查此时间间隔中是否包含各种时间戳。
构造初始间隔可能如下所示:
Interval today = new Interval(DateTime.now().withTimeAtStartOfDay(), Days.ONE);然后可以像这样检查时间戳:
today.contains(DateTime.now()); // True
today.contains(DateTime.now().minusDays(1)); // False
today.contains(DateTime.now().plusDays(1)); // False
today.contains(someOtherTimeStamp.toDateTime()); // And so on...https://stackoverflow.com/questions/21669148
复制相似问题