日期格式不正确 java
date format is not correct java
我正在尝试从 excel 文件中读取日期单元格,我正在使用 DataFormatter,但问题是我得到的格式不正确(日期和月份颠倒),示例:
在 excel 文件中:15/03/2018
阅后:2018-03-15
我需要解决此问题或将单元格转换为字符串格式以便与另一个字符串进行比较。
提前致谢。
这是我阅读单元格的方式:
DataFormatter formatter = new DataFormatter();
String current_date = formatter.formatCellValue(date_cell);
您可以构建特定的日期格式化程序,例如
SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");
df.parse(
(等等)
因此,如果它正确读取日期(我的意思是天被读为天,月被读为月),那么制作一个特定于您想要的输出的日期格式化程序就是一件简单的事情。
例如
SimpleDateFormat df = new SimpleDateFormat("dd/mm/yyyy");
然后是……呃……
String current_date = df.format(date_cell);
或者如果您需要单元格格式化程序为您读取值,它会稍微复杂一些。
顺便说一句:
请注意,由于 SimpleDateFormat 相对简单易用,它可能已被弃用并被视为坏的、邪恶的和错误的 (tm)。
(因为一旦你开始介绍时区、本地化和日历系统之间的差异等东西,事情就会很快变得复杂(因为现实世界是混乱的),简单的答案只对快速和肮脏的 'local'修复)
如顶部的 javadocs 所示,Locale.US 和 Locale.UK 可能会混淆。
阅读后您将获得美国公约 Month/Day/Year 而不是英国公约 Day/Month/Year。
DataFormatter formatter = new DataFormatter(Locale.UK);
尝试这样的事情:
String s = "03/15/2018";
Date d = new Date(s);
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String t = df.format(d);
System.out.println(t);
(s 对应于您的 current_date 变量并紧跟在您的其他代码之后)
注意:你必须使用大写 Ms,因为在 date/time 格式中 'm' 代表分钟(所以我之前的代码不好)
NB^2:根据之前的讨论,代码 "new Date(s)" 肯定已弃用,并且是错误的。如果重要的话,可能会有一个更规范的答案,涉及本质上相同的事情,但使用日历。
我正在尝试从 excel 文件中读取日期单元格,我正在使用 DataFormatter,但问题是我得到的格式不正确(日期和月份颠倒),示例: 在 excel 文件中:15/03/2018 阅后:2018-03-15
我需要解决此问题或将单元格转换为字符串格式以便与另一个字符串进行比较。
提前致谢。
这是我阅读单元格的方式:
DataFormatter formatter = new DataFormatter();
String current_date = formatter.formatCellValue(date_cell);
您可以构建特定的日期格式化程序,例如
SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");
df.parse(
(等等)
因此,如果它正确读取日期(我的意思是天被读为天,月被读为月),那么制作一个特定于您想要的输出的日期格式化程序就是一件简单的事情。
例如
SimpleDateFormat df = new SimpleDateFormat("dd/mm/yyyy");
然后是……呃……
String current_date = df.format(date_cell);
或者如果您需要单元格格式化程序为您读取值,它会稍微复杂一些。
顺便说一句:
请注意,由于 SimpleDateFormat 相对简单易用,它可能已被弃用并被视为坏的、邪恶的和错误的 (tm)。
(因为一旦你开始介绍时区、本地化和日历系统之间的差异等东西,事情就会很快变得复杂(因为现实世界是混乱的),简单的答案只对快速和肮脏的 'local'修复)
如顶部的 javadocs 所示,Locale.US 和 Locale.UK 可能会混淆。
阅读后您将获得美国公约 Month/Day/Year 而不是英国公约 Day/Month/Year。
DataFormatter formatter = new DataFormatter(Locale.UK);
尝试这样的事情:
String s = "03/15/2018";
Date d = new Date(s);
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String t = df.format(d);
System.out.println(t);
(s 对应于您的 current_date 变量并紧跟在您的其他代码之后)
注意:你必须使用大写 Ms,因为在 date/time 格式中 'm' 代表分钟(所以我之前的代码不好)
NB^2:根据之前的讨论,代码 "new Date(s)" 肯定已弃用,并且是错误的。如果重要的话,可能会有一个更规范的答案,涉及本质上相同的事情,但使用日历。