我正在尝试从excel文件中读取日期单元格,我正在使用DataFormatter,但问题是我获得的格式不正确(日期和月份被反转),例如: 在excel文件中:15/03/2018 阅读后:03/15/2018
我需要修复此问题或将单元格转换为字符串格式,以便将其与另一个字符串进行比较。
提前感谢。
这是我读单元格的方式:
DataFormatter formatter = new DataFormatter();
String current_date = formatter.formatCellValue(date_cell);
答案 0 :(得分:4)
如顶部的javadocs所示,Locale.US和Locale.UK可能会混淆。
阅读后,您将获得美国会议月/日/年而不是英国的一天/月/年。
DataFormatter formatter = new DataFormatter(Locale.UK);
答案 1 :(得分:0)
尝试这样的事情:
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变量,并且紧跟在您的其他代码之后)
注意:你必须使用资本女士,因为日期/时间格式'm'代表分钟(所以我以前的代码不好)
NB ^ 2:根据之前的讨论,代码“new Date(s)”肯定已被弃用,并且是坏的和错误的。如果重要的话,可能会有一个更典型的答案,涉及与日历基本相同的事情。
答案 2 :(得分:-1)
您可以构建特定的日期格式化程序,例如
SimpleDateFormat df = new SimpleDateFormat("dd/mm/yyyy");
(等)
因此,如果它正确地读取日期(我的意思是将天数读作天数,将月份读取为几个月),那么制作日期格式化程序非常简单你想要的输出。
e.g。
String current_date = df.format(date_cell);
然后......呃......
{{1}}
或者如果您需要单元格格式化程序来为您读取值,它会更复杂一些。
暂且不说:
请注意,由于SimpleDateFormat相对简单且易于使用,因此可能已被弃用,并被视为坏,邪恶和错误(tm)。
(因为一旦你开始介绍诸如时区之类的东西,日历系统之间的本地化和差异,事情变得非常复杂(因为现实世界很混乱)而简单的答案只对快速和肮脏的#39有好处。 ;本地'修复)