答案 0 :(得分:29)
日期可以通过单一陈述进行比较,以便您需要特殊功能。
当dateTime
是DateTime()
的对象时
当if((dateTime.toLocalDate()).equals(new LocalDate()))
date
是java.util.date
什么Joda-time类更适合这个? LOCALDATE的?日期时间? 强> 了解您需要知道什么是LocalDate和DateTime。 因此,如果您需要比较日期和时间,请更好地使用 if((new DateTime(date).toLocalDate()).equals(new LocalDate()))
LocalDate()
是一个不可变的日期时间类,表示没有的日期
时区。所以没有时间参与。DateTime()
是不可修改日期时间的标准实现
类。它具有Date的所有属性,包括
date
,time
和timezone
。datetime
,如果您只需要查看必须使用localDate
的日期,因为日期时间会产生false
如果使用.equal
运算符,除非包含秒部分的时间对于两个对象都相同。
答案 1 :(得分:13)
以下是检查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;
}
答案 2 :(得分:10)
一种可能性是创建一个覆盖整个相关日期的间隔,然后检查此间隔中是否包含各种时间戳。
构造初始间隔可能如下所示:
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...
答案 3 :(得分:3)
建议的方法是:
DateTime midnightToday = DateTime.now().withTimeAtStartOfDay();
DateTime myDateTime = <whatever>;
if(myDateTime.isAfter(midnightToday)) {
}
我认为你需要Joda 2.5才能做到这一点,但这应该可以解决问题。
答案 4 :(得分:1)
AFAIK没有直接方法可以检查日期是否为今日。
最简单的方法是使用时间戳构建两个DateTime
,使用今天日期构建另一个,然后比较dayOfYear()
的日和year()
的年份,但要记住两个日期是否都是在UTC
或Local Time Zone
中
一小部分样本,
DateTime date = new DateTime(TimeStamp);
DateTime todayDate = new DateTime();
if(date.dayOfYear().get() == todayDate.dayOfYear().get() && date.year().get() == todayDate.year().get())
{
System.out.println("Date is today date");
}
答案 5 :(得分:1)
Joda时间实际上有一个方法:
DateUtils#isToday(ReadablePartial);
DateUtils#isToday(ReadableInstant);
答案 6 :(得分:1)
我喜欢@JustinMorris的答案。但我发现这更好:
public static boolean isToday(DateTime time) {
return LocalDate.now().equals(new LocalDate(time));
}
public static boolean isTomorrow(DateTime time) {
return LocalDate.now().plusDays(1).equals(new LocalDate(time));
}
public static boolean isYesterday(DateTime time) {
return LocalDate.now().minusDays(1).equals(new LocalDate(time));
}
答案 7 :(得分:-1)
我发现最简单的方法:
public boolean isToday(DateTime dateTime) {
return dateTime.withTimeAtStartOfDay().getMillis() ==
new DateTime().withTimeAtStartOfDay().getMillis();
}