我希望在我的Android应用中比较两个日期,但我遇到了一个非常奇怪的问题。
例如:
如果我将“回到过去”的日期设置为127天前:
this.dateEvent = System.currentTimeMillis() - (127 * 24 * 3600 * 1000)
然后将其与当前日期进行比较(计算天数)
Calendar sDate = getDatePart(new Date(this.dateEvent));
Calendar eDate = getDatePart(new Date(System.currentTimeMillis()));
int daysBetween = 0;
while (sDate.before(eDate))
{
sDate.add(Calendar.DAY_OF_MONTH, 1);
daysBetween ++;
}
while (sDate.after(eDate))
{
eDate.add(Calendar.DAY_OF_MONTH, 1);
daysBetween ++;
}
return daysBetween;
它将返回22,这完全不是预期的结果。
我是否做错了什么,还是Calendar
类存在问题?
dateEvent
的声明是什么样子的? - keyserdateEvent
声明为private long dateEvent = 0L;
。我也尝试将DAY_OF_MONTH
替换为DAY_OF_YEAR
,但这并没有解决问题。 - ManitobaCalendar
类设计不佳且已经过时,因此请勿使用它。与Calendar
相反,java.time不仅更易于使用,而且还具有直接支持查找两个日期之间天数的功能。 - Ole V.V.