日期格式不正确java

时间:2018-06-04 23:41:26

标签: java apache-poi dateformatter

我正在尝试从excel文件中读取日期单元格,我正在使用DataFormatter,但问题是我获得的格式不正确(日期和月份被反转),例如: 在excel文件中:15/03/2018 阅读后:03/15/2018

我需要修复此问题或将单元格转换为字符串格式,以便将其与另一个字符串进行比较。

提前感谢。

这是我读单元格的方式:

DataFormatter formatter = new DataFormatter();
String current_date = formatter.formatCellValue(date_cell);

3 个答案:

答案 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有好处。 ;本地'修复)