Android中的日期比较

时间:2015-07-16 10:08:17

标签: java android

我正在做的应用程序从收件箱中读取短信,如果有新的短信,请将它们上传到FTP服务器。我使用date比较no来上传所有短信,但只使用自上次上传以来发布的短信。为了保持上次上传日期,我使用 SharedPreferences

这是我方法的代码,用于检查是否有新短信,如果是,则保存为arraylist。

public ArrayList<String> getSms() {
    sms_list = new ArrayList<String>();
    sms_uri = Uri.parse("content://sms/inbox");
    cursor = getContentResolver().query(sms_uri, null, null, null, null);
    String sms_text = "";
    while (cursor.moveToNext()) {
        Date now_date = getDate(cursor.getString(cursor.getColumnIndex("date")));
        if (now_date.after(last_sms_date)) {
            sms_text = cursor.getString(cursor.getColumnIndex("address")) + "#" + cursor.getString(cursor.getColumnIndex("body")) + "#" + now_date;
            sms_list.add(sms_text);
       }
    }
    if(sms_list.size() != 0) {
        cursor.moveToFirst();
        last_sms_date = getDate(cursor.getString(cursor.getColumnIndex("date")));
        saveDate(dateToString(last_sms_date));
    }
    return sms_list;
}

问题是条件:  if (now_date.after(last_sms_date)) 因为即使没有新短信,对于日期与last_sms_date相同的短信,此语句 true ,因此此短信被添加到arraylist

将日期与data1.after(data2)方法进行比较只有当data2晚于data1时才会返回true,但在我的情况下它不是这样。 这个bug在哪里?我使用compareTo()方法也一样。

GETDATE()

 public static Date getDate(String milliSeconds) {
    SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis( Long.parseLong(milliSeconds));
    Date date;
    date = calendar.getTime();
    formatter.format(date);
    return date;
}

1 个答案:

答案 0 :(得分:0)

使用格式到日期:

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
Date today = Calendar.getInstance().getTime(); 


String A = formatter.format(today);
Date B = formatter.parse(last_sms_date);


if (A.compareTo(B) == -1) { 
System.out.println("A<B"); 
} 
else{
System.out.println("A>B");
}