Java/Android : Literally Compare date of 2 Calendar objects

标签 java android date calendar

我正在尝试将 2 个日历对象与其日期进行比较。

我的代码:

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 的整数,其中我的情况应该是:-1。

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

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

有没有一些基于日历库的方法可以实现这一点?

我知道内置方法,如 getDay()、getMonth()、equals() 等。问题是,在使用 getDay()、getMonth()、getYear() 时,很难进行比较,因为我正在比较 3 个整数。

此外,我有一种感觉,要比较两个日期,我必须将时区和 timeinMillis 设置为相同。意思是直接比较日期,对于cal1和cal2,其时区和timeinmillis必须相同。

有人可以向我解释一下吗?

最佳答案

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

您正在寻找的 boolean 结果表明您应该使用等于、之前或之后等动词来思考/说话!

采用一个明确定义的概念,保留名称但改变其含义是一个坏主意!

关于Java/Android : Literally Compare date of 2 Calendar objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43532975/

相关文章:

Android:Listview在滚动时显示错误的图像

android - 标记 Android 版本

date - 如何将日期和值与 Google 图表中的网格线对齐?

c# - 每周汇总值的 MySQL 查询

java - 改造返回一个空的响应主体

java - 如何使用文件 channel 作为参数来写入对象

java - Android Activity "implements"无法解析类方法的符号?

java - Android使用路径获取文件(字符串格式)

java - 旋转碰撞盒并在计算中检测该旋转

php - 在 php 中转换 mysql 时间时,无论 mysql 时间如何,我总是得到 16 :00:20,