我正在做的应用程序从收件箱中读取短信,如果有新的短信,请将它们上传到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;
}
答案 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");
}