java - 自定义比较器不排序时间
问题描述
我正在做一个项目,我在自定义比较器中比较日期和时间。我实际上将日期与日期和时间连接起来。当我调试问题时,我意识到时间没有得到排序。这是我的比较器中的代码片段。
Date dateObject1= new Date();
Date dateObject2 = new Date();
try {
dateObject1 = sdf.parse(date1 + "T" + time1);
dateObject2 = sdf.parse(date2 + "T" + time2);
} catch (Exception e) { }
if (dateObject1.compareTo(dateObject2) > 0)
return 1;
else if (dateObject1.compareTo(dateObject2) < 0)
return -1;
else
return 0;
测试用例: 1. date1 - 2019-12-13 , date2 - 2019-12-13 time1 - 08:00:00, time2 - 12:00:00
当我调试问题时,我发现上面的测试用例返回 0。我不确定它为什么会发生,但我打算返回 -1 以便它按升序排序。请指教。
解决方案
你的问题在这里
} catch (Exception e) { }
您初始化 2 个日期,这两个日期都被初始化为当前时间 ( System.currentTimeMillis()
)。
Date dateObject1= new Date();
Date dateObject2 = new Date();
然后你的解析失败了,但是你吞下了这个异常,所以你从来没有注意到它。
然后,您尝试对两个完全相同或相隔几毫秒的日期进行排序,但肯定与您尝试排序的实际时间戳无关。
检查异常,修复解析,然后它将起作用。
推荐阅读
- azure-iot-hub - 如何将图像输入到 Azure IOT Hub?
- python - python bokeh中的xaxis时间戳格式
- c - linux下如何定位导致应用接收SIGTTIN的代码位置?
- amazon-web-services - 将亚马逊 IP 添加到 Cpanel
- c# - 如何制作公共二维收藏?
- c++ - 有没有一种有效的方法来删除已经分配但没有重新分配的空特征行?
- python-2.7 - 无法使用 pip install grpcio 安装 grpcio
- python - TensorFlow 线性回归 - 返回 NaN 权重、偏差和 Inf 损失
- matlab - 从二进制字符串中获取模式
- unix - 如何在 UNIX 中提取关键字后面的文本