在比较日历时忽略时间

时间:2012-10-23 17:46:24

标签: java android calendar

我将2个日历设置为相同的日期,但结果为 Cal1.CompareTo(Cal2)不是所需的零,因为2个日历的时间不同。 有没有办法缩短日历条目的时间? 一种解决方案是将日历条目转换为类型“日期”。但是,几乎不推荐使用Date(或至少使用Calendar的日,月和年参数构造函数) 还有其他想法吗? 在timeInMuliseconds上做一些模数计算听起来很难看。

TIA

3 个答案:

答案 0 :(得分:4)

您可以在两个对象上将MILLISECOND(或任何您不想要比较的字段)设置为ZERO。

示例:

cal.set(Calendar.MILLISECOND, 0);
cal.set(Calendar.HOUR , 0);
cal.set(Calendar.MINUTE , 0);
cal.set(Calendar.SECOND , 0);

以下是javadoc日历。

答案 1 :(得分:2)

就个人而言,我强烈建议您使用Joda Time代替。此时,您可以使用LocalDate来代替您感兴趣的信息.Joda Time拥有更丰富的类型。它通常是比内置CalendarDate类更好的日期/时间API。

请注意,您还应该考虑时区 - 同一时刻可以是两个不同的人的不同日期...(当构建 a {{1时,您必须考虑这一点}})。

所有这一切都假设这两个值也在同一个日历系统中 - 但这很可能。

答案 2 :(得分:0)

使用以下方式打印您的日历:

Log.d("Test","Time1: "+cal1.getTimeInMillis());
Log.d("Test","Time2: "+cal2.getTimeInMillis());

如果你没有得到相同的时间,并且你想要两者都相同,那就做这样的事情:

cal2 = cal1.clone;