首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Joda-Time有名为isToday的方法吗

Joda-Time有名为isToday的方法吗
EN

Stack Overflow用户
提问于 2014-02-10 12:33:39
回答 8查看 20.3K关注 0票数 16

我需要检查给定的时间戳是否为今天。我正在使用Joda-Time。有没有一种方法或简单的方式来检查这个?哪个Joda-Time类更适合这样?LocalDateDateTime

EN

回答 8

Stack Overflow用户

发布于 2014-02-10 13:46:49

日期可以通过单个语句进行比较,所以您需要一个特殊的函数。

dateTime**is一个** DateTime()的对象时为

代码语言:javascript
运行
复制
if((dateTime.toLocalDate()).equals(new LocalDate()))

java.util.date的对象为时为

代码语言:javascript
运行
复制
 if((new DateTime(date).toLocalDate()).equals(new LocalDate()))

哪个Joda-time类更适合这样?LocalDate?DateTime?

理解你需要知道什么是LocalDate和DateTime。

LocalDate()是一个不可变的datetime类,表示不带时区的日期。所以没有时间段。

DateTime()是不可修改的datetime类的标准实现。它具有Date的所有属性,包括datetimetimezone

因此,如果你需要比较日期和时间,最好使用datetime,如果你只需要检查日期,你必须使用localDate,因为如果使用.equal操作符,datetime将产生一个false,除非两个对象包含秒部分的时间相同。

票数 32
EN

Stack Overflow用户

发布于 2017-03-01 08:19:07

这里有一些简单的方法来检查DateTime是今天、明天还是昨天:

代码语言:javascript
运行
复制
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;
}
票数 22
EN

Stack Overflow用户

发布于 2014-02-10 14:06:05

一种可能性是创建一个覆盖所讨论的全天的时间间隔,然后检查此时间间隔中是否包含各种时间戳。

构造初始间隔可能如下所示:

代码语言:javascript
运行
复制
  Interval today = new Interval(DateTime.now().withTimeAtStartOfDay(), Days.ONE);

然后可以像这样检查时间戳:

代码语言:javascript
运行
复制
  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...
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21669148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档