Java POI DataFormatter为日期单元格返回2位数的年份,而不是4位数的年份

Java POI DataFormatter为日期单元格返回2位数的年份,而不是4位数的年份,java,apache-poi,Java,Apache Poi,Excel单元格具有日期格式m/d/yyyy,用4位数字显示日期年份。但是,POI以另一种格式返回日期m/d/yy。单元格样式返回相同的格式,其中包含两位数字:yearcell.getCellStyle().getDataFormatString() 是否可以获得与我在Excel中看到的POI格式相同的格式 在中,我已经表明,如果使用默认日期格式(Short date)格式化的Excel中的日期只在文件中存储了格式id0xE(14),并且在任何地方都没有存储格式模式。因此,如何在Excel中显示

Excel单元格具有日期格式
m/d/yyyy
,用4位数字显示日期年份。但是,POI以另一种格式返回日期
m/d/yy
。单元格样式返回相同的格式,其中包含两位数字:year
cell.getCellStyle().getDataFormatString()

是否可以获得与我在Excel中看到的POI格式相同的格式

在中,我已经表明,如果使用默认日期格式(
Short date
)格式化的
Excel
中的日期只在文件中存储了格式id
0xE
(14),并且在任何地方都没有存储格式模式。因此,如何在Excel中显示
短日期
,取决于系统的区域设置

答案中还显示了如何在不使用ApachePOI的数据格式化程序的情况下解决这个问题

使用ApachePOI的
DataFormatter
我们可以通过定制
DataFormatter
来解决这个问题

例如:

卓越:

代码:

设置了
java.util.Locale.GERMANY
set的结果:

Short Date
12.08.2018
Formatted Date
Sonntag, August 12, 2018
Short Date
8/12/2018
Formatted Date
Sunday, August 12, 2018
Short Date
12/08/2018
Formatted Date
Sunday, August 12, 2018
设置了
java.util.Locale.US
set的结果:

Short Date
12.08.2018
Formatted Date
Sonntag, August 12, 2018
Short Date
8/12/2018
Formatted Date
Sunday, August 12, 2018
Short Date
12/08/2018
Formatted Date
Sunday, August 12, 2018
设置了
java.util.Locale.UK
set的结果:

Short Date
12.08.2018
Formatted Date
Sonntag, August 12, 2018
Short Date
8/12/2018
Formatted Date
Sunday, August 12, 2018
Short Date
12/08/2018
Formatted Date
Sunday, August 12, 2018
看见