0

我目前正在处理一些需要比较日期的代码,如下所示:

public int compare(ItemLocation o1, ItemLocation o2) {
            try {
                SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
                Date date1 = sdf.parse(o1.getDatePublished());
                Date date2 = sdf.parse(o2.getDatePublished());
                Calendar cal1 = Calendar.getInstance();
                Calendar cal2 = Calendar.getInstance();
                cal1.setTime(date1);
                cal2.setTime(date2);
                if(cal1.equals(cal2)) { 
                    return 0; 
                } else if(cal1.before(cal2)) {
                    return -1;
                } else if(cal1.after(cal2)) {
                    return 1;
                }
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }

所以我的问题是多方面的。

  1. 这是比较两个日期的最佳方法吗?
  2. 使用“方法必须返回 int 类型的结果”错误消息,解决此问题的最佳方法是什么?(我不认为添加 return 0; 最后是非常实用的......这就是我的想法)
  3. [可选] 有没有更有效的方法来编写 3 个 if/else if 语句?

多谢你们!

4

2 回答 2

1
  1. 利用date1.compareTo(date2)
  2. 编译错误:没有默认返回值。见第 1 点
  3. 从第 1 点开始:

    SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
    Date date1 = sdf.parse(o1.getDatePublished());
    Date date2 = sdf.parse(o2.getDatePublished());
    return date1.compareTo(date2);
    
于 2012-08-05T01:24:54.063 回答
1

看起来是比较日期的好方法。对于编译错误,在你的 catch 块中重新抛出一个异常或返回一个 int 值。

于 2012-08-05T01:26:07.637 回答