gpt4 book ai didi

java - 如何在java中对日期进行排序

转载 作者:行者123 更新时间:2023-11-29 10:09:59 26 4
gpt4 key购买 nike

我有 List AttendedExamName 对象

public class AttendedExamName {
private String name;
private String dateTime;

//getters
//settrs
}

当尝试使用以下代码对对象进行排序时,我尝试基于 dateTime 属性进行排序

Collections.sort(examNames, (n1,n2)-> {
try {
Date date1= new SimpleDateFormat("yyyy-MM-dd-hh.mm.ss").parse(n1.getDateTime());
Date date2=new SimpleDateFormat("yyyy-MM-dd-hh.mm.ss").parse(n2.getDateTime());
return date1.compareTo(date2);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
});

我得到这个结果:

[[name=SCJP, dateTime=2017-04-15-04.37.57],
[name=SCJP, dateTime=2017-04-15-06.31.52],
[name=SCJP, dateTime=2017-04-24-02.17.37],
[name=SCJP, dateTime=2017-04-26-05.10.29],
[name=SCJP, dateTime=2017-04-27-03.30.34],
[name=SCJP, dateTime=2017-04-28-12.11.09],
[name=SCJP, dateTime=2017-04-28-01.16.59],
[name=SCJP, dateTime=2017-04-28-02.10.54],
[name=SCJP, dateTime=2017-04-28-11.31.16],
[name=SCJP, dateTime=2017-04-28-11.57.56]]

预期:

[[name=SCJP, dateTime=2017-04-15-04.37.57],
[name=SCJP, dateTime=2017-04-15-06.31.52],
[name=SCJP, dateTime=2017-04-24-02.17.37],
[name=SCJP, dateTime=2017-04-26-05.10.29],
[name=SCJP, dateTime=2017-04-27-03.30.34],
[name=SCJP, dateTime=2017-04-28-11.31.16],
[name=SCJP, dateTime=2017-04-28-11.57.56],
[name=SCJP, dateTime=2017-04-28-12.11.09],
[name=SCJP, dateTime=2017-04-28-01.16.59],
[name=SCJP, dateTime=2017-04-28-02.10.54]]

怎么了?

最佳答案

很好:问题在这里:

yyyy-MM-dd-hh.mm.ss

预计小时数最多为 12。但是您需要 24 小时系统,因此您的字符串格式应为:

yyyy-MM-dd-HH.mm.ss

引用javadoc :

H Hour in day (0-23)

h Hour in am/pm (1-12)

除此之外:我建议不要将比较器写为 sort() 的 lambda 表达式。那东西值得它自己的内部类;或者:在您的类上实现 Comparable 接口(interface)!郑重声明:您还希望避免代码重复。两次写下格式字符串已经在创建代码重复;因此有可能出现错误。

当然:为什么首先要在该类中存储字符串?您应该对真实日期进行一次转换并存储数据对象,而不是在排序过程中进行无数次!

关于java - 如何在java中对日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43679040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com