问题描述
我正在从csv文件读取数据,我正在读取时间数据。 csv中的数据以这种方式写入:5/15/2020 10:00:00 AM,但是当我阅读时,我得到的是:15 / Apr / 2020。这是我到目前为止尝试过的代码片段。
String dateClosedBug = csvToObjects[1].toString();
String[] splitDateClosedBug = dateClosedBug.split(" ");
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date closedDate = dateFormat.parse(splitDateClosedBug[0]);
System.out.println(closedDate);
csvToObjects[1]
是另一种处理方式的变量。我无法打印closedDate的值,因为解析该值时出错。有人知道我在解析值时应该改变什么方法吗?
解决方法
java.time
我建议您使用java.time(现代的Java日期和时间API)进行日期和时间工作。
DateTimeFormatter csvFormatter = DateTimeFormatter.ofPattern("M/d/u h:mm:ss a",Locale.ENGLISH);
String dateClosedBug = "5/15/2020 10:00:00 AM";
LocalDateTime closedBug = LocalDateTime.parse(dateClosedBug,csvFormatter);
LocalDate closedBugDate = closedBug.toLocalDate();
System.out.println(closedBugDate);
此代码段的输出为:
2020-05-15
与拆分字符串相比,我发现对字符串进行整体解析会更好,更容易。解析后丢弃信息要比发明您忽略的信息要容易得多。
教程链接: Oracle tutorial: Date Time解释了如何使用java.time。