有没有解决方案可以停止在Java程序中将月份数据从数字转换为字母?

问题描述

我正在从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。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...