当前位置: 首页 > 知识库问答 >
问题:

Java/Android:从字面上比较两个日历对象的日期

高锦
2023-03-14
Calendar c1 = Calendar.getInstance(); 
Calendar c2 = Calendar.getInstance(); 

c1.set(2017, 1,2); 
c2.set(2017, 1,1); 

int compared = c1.compareTo(c2);

textView.setText("" + compared);

结果应该是-1或1的int值,其中我的情况应该是:-1。

然而,这不是我想要的结果。我想能够比较日期直接说:

01/20/2010 compared to 02/30/2014 returns true or false. 

是否有一些基于日历库来实现这一点的方法?

共有1个答案

章兴发
2023-03-14

从概念的角度来看,您应该小心:compareTo()具有返回int的特殊含义,它的-1,0,1结果告诉您如何对比较的对象排序。

您正在寻找的布尔结果表明您应该使用equals、before或after等动词来思考/说话!

这是一个坏主意采取一个定义明确的概念,保留名称,但在掩盖下改变含义!

 类似资料:
  • 问题内容: 我需要在Java中比较两个日期。我正在使用这样的代码: 这是行不通的。变量的内容如下: 包含 包含 我该如何解决? 问题答案: 日期相等性取决于两个等于毫秒的日期。使用创建新的Date对象将永远不会等于过去创建的日期。Joda Time 的API简化了日期的处理。但是,仅使用Java的SDK:

  • 代码: 输出:(增加空白行以提高可读性) 有两件事我不明白: null 我还查看了date.equals()的实现: 那么,为什么返回false,尽管为两个对象都返回了1406498400000? 参考:http://docs.oracle.com/javase/7/docs/api/java/util/date.html#equals(java.lang.object)

  • 问题内容: 我有一个电影课,里面有开始日期,持续时间和结束日期。开始和停止日期是日期对象(私有日期startDate …)(这是一个分配,因此我无法更改),现在我想通过将持续时间(以分钟为单位)添加到startDate中来自动计算stopDate。 据我所知,不赞成使用Date的时间操作功能,因此是不好的做法,但另一方面,我看不到将Date对象转换为日历对象以操纵时间并将其重新转换为Date对象的

  • 问题内容: 当比较Javascript中的日期对象时,我发现即使比较同一日期也不会返回true。 我如何比较这些日期的相等性?我对利用JS 的本机对象(而不是任何第三方库)感兴趣,因为它不适合仅使用第三方JS来比较日期。 问题答案: 这是因为在第二种情况下,将比较实际的日期对象,并且两个对象永远不会彼此相等。强迫他们编号: 如果要更明确地转换为数字,请使用以下任一方法: 要么 哦,对规范的引用:§

  • 问题内容: 在我的收藏夹中,每个文档都有2个修改和同步的日期。我想查找已修改>同步,或不存在同步的内容。 我试过了 但没有显示我的期望。有任何想法吗? 谢谢 问题答案: 您不能将一个字段与具有正常查询匹配的另一个字段的值进行比较。但是,您可以使用聚合框架执行此操作: 我在其中输入“您的其他常规查询”,因为您可以使该位使用索引。因此,如果您只想对该字段所在的文档执行此操作,则可以执行以下操作: 用输