搜索API以String
格式返回日期,我想将该日期与当前日期进行比较并执行某些操作。我创建了一个日期对象并对其进行了解析,但在进行比较时仍然出现错误。
Calendar currentDate = Calendar.getInstance();
long dateNow = currentDate.getTimeInMillis();
String eventDate = meta.getString("startDate"); //This is the string API returns
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS");
Date date = formatter.parse(eventDate);
long modifiedDate= date.getTime();
if (dateNow.compareTo(modifiedDate)>0) {
//Do Something
}
我得到的错误是:
Cannot invoke compareTo(long) on the primitive type long
感谢。
答案 0 :(得分:5)
比较原始long
时,只需使用一个香草比较运算符:
dateNow > modifiedDate
不建议这样做,但如果您想使用compareTo
,请先转换为Long
:
Long.valueOf(dateNow).compareTo(Long.valueOf(modifiedDate)) > 0
答案 1 :(得分:1)
compareTo方法是包装类的一部分,long是原始数据类型 - 您不能在原始数据类型上调用方法。可以将long更改为Long或直接比较long,如dateNow> modifiedDate
答案 2 :(得分:1)
long
是一种原始类型,这意味着它不是一个对象,并且没有compareTo
等基本方法。您可以执行数学运算来比较它们:
if (dateNow - modifiedDate > 0) /* dateNow is later than modifiedDate */
另一个解决方案是使用Long
(大写字母L) 一个对象。然后你可以使用compareTo
等。
答案 3 :(得分:-2)
compareTo
是一种方法。它没有为基本类型long
定义。为Date类定义了 。
Date dateNow = currentDate.getTime(); // instead of getTimeInMillis()
...
if (dateNow.compareTo(date)) { // this will now work
如果它们都是Date对象,那么你可以做dateNow.before(date)
,这在语义上更有意义。
或者,您可以使用&gt;和&lt;如果您将dateNow < modifiedDate
作为一个长期保留{。}},请执行dateNow
。