如何解决在这种情况下,如何找到最新加入日期的员工
我有员工名单,我正在尝试找到最新加入日期的Employee
。这是我到目前为止已经实现的。
员工:
package com;
public class Employee {
private String accountNumber;
private String joiningdate;
public Employee(String accountNumber,String joiningdate) {
super();
this.accountNumber = accountNumber;
this.joiningdate = joiningdate;
}
// setters and getters
}
应用程序:
package com;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class LatestDueDate {
public static void main(String[] args) throws Exception {
try {
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
List < Employee > empList = new ArrayList < > ();
empList.add(new Employee("1234","07/11/2020"));
empList.add(new Employee("1234","06/12/2020"));
Employee emp = empList.stream().max(Comparator.comparing(Employee::getJoiningdate)).get();
} catch (Exception e) {
}
}
}
我知道我需要将字符串日期格式转换为Date。
解决方法
您可以将String日期转换为mysql --local-infile=1 -h$MASTER_DB_HOST -u$MASTER_DB_USER -p$MASTER_DB_PASSWD -D$MASTER_DB_NAME << EOF
LOAD DATA LOCAL INFILE '$csv_file' INTO TABLE $table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES(Id,FirstName,MiddleName) SET created_by = 'DH_INITIAL_LOAD',created_on = current_timestamp();
SELECT ROW_COUNT();
EOF
并在比较器中进行比较。但是我建议您在Employee类中为LocalDate
使用LocalDate
,这样您就不必解析比较器中的日期字符串到最新的加入日期1。
joiningdate
注意:请勿使用旧的DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
Employee emp = empList.stream()
.max(Comparator.comparing(e -> LocalDate.parse(e.getJoiningdate(),formatter)))
.get();
类,而应使用Date
中的LocalDate
您正在按员工的入职日期进行排序,但问题是您的Java类使用 text 字符串表示该日期,而不是善意的java.util.Date
或等效的Java 8类。如果您必须坚持使用文本日期,那么至少应以ISO格式表示它们,例如
List<Employee> empList = new ArrayList<>();
empList.add(new Employee("1234","2020/11/07"));
empList.add(new Employee("1234","2020/12/06"));
Employee emp = empList.stream().max(Comparator.comparing(Employee::getJoiningdate)).get();
System.out.println("Latest employee joined on: " + emp.getJoiningDate());
以上方法有效,因为文本日期2020/12/06
将在2020/11/07
之后排序。更好的方法可能是使用适当的日期类型表示加入日期,或者至少在对员工进行排序之前将文本日期转换为实际日期类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。