比较字符串日期与当前长时间

时间:2012-06-29 17:31:42

标签: java android

搜索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

感谢。

4 个答案:

答案 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