【问题标题】:Date comparison fails d1.compareTo(d2)日期比较失败 d1.compareTo(d2)
【发布时间】:2021-07-09 05:49:13
【问题描述】:

排序的日期比较不起作用。请指教。

我的代码:

public class ListMapComparator implements Comparator {
    @Override
    public int compare(Object obj1, Object obj2) {
        try {
            Map<String, String> test1 = (Map<String, String>) obj1;
            Map<String, String> test2 = (Map<String, String>) obj2;
            String string1 = test1.get("formattedDate");
            String string2 = test2.get("formattedDate");
            SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
            Date d1 = sdf.parse(string1);
            Date d2 = sdf.parse(string2);
            return d1.compareTo(d2);
        } catch (ParseException ex) {
            //Logger.getLogger(ListMapComparator.class.getName()).log(Level.SEVERE, null, ex);
        }
        return 0;
    }
}

错误:

错误:找不到符号 返回 d1.compareTo(d2);
符号:方法 compareTo(Date)
位置:日期类型的变量 d1
注意:某些输入文件使用或覆盖已弃用的 API。
注意:使用 -Xlint:deprecation 重新编译以获取详细信息。
注意:某些输入文件使用未经检查或不安全的操作。
注意:重新编译时使用 -Xlint:unchecked for details。

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    代号一中的Date 类不可比较,因此调用compareTo 将失败。但是,您可以通过将最后一行更改为:

    return (int)(d1.getTime() - d2.getTime());
    

    或者反过来按相反的顺序排序。

    【讨论】:

    • 这是一个不错的解决方案,但是在我的情况下,将其转换为 int 并不能正常工作。这个例子(从最早到最新)更准确:return Long.compare(date1.getTime(), date2.getTime());
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    相关资源
    最近更新 更多