从excel文件中读取不同位置的日期

时间:2015-04-10 05:58:59

标签: java apache date apache-poi locale

我正在使用Apache POI在Java中读取Excel文件。

有些日期格式化的列,格式为MM / DD / YYYY

当我在印度阅读该文件时,它会正确读取日期。

e.g。 2015年7月4日阅读时间为2015年4月7日 例如2014年11月30日阅读时间为2015年11月30日

这很好。

但是,当在美国运行相同的代码时,它表现得很奇怪。

e.g。 2015年7月4日阅读时间为2015年7月4日 例如2014年11月30日未能说30月无效。

当我在美国和印度的MS Excel中打开excel文件时,它们的可见性是相同的。即在excel中显示为MM / DD / YYYY。但是通过代码在美国读错了。

我的代码很简单:

if (DateUtil.isCellDateFormatted(cell))
    data.append(cell);

根据地点,POI完成了一些事情。有人可以建议如何处理这种情况。

1 个答案:

答案 0 :(得分:0)

试试这个(cell1.getDateCellValue()正常工作):

//get your cell value

Cell cell1 = sheet.getRow(0).getCell(0); 
System.out.println(cell1.getDateCellValue());

OR

尝试使用SimpleDateFormat类:

//using Apache POI get the date
SimpleDateFormat sdf = new SimpleDateFormat("MM/DD/YYYY");
Date date = sdf.parse("your date");
String formattedDate=sdf.format(date);
System.out.println(formattedDate);

另一种获取时区的方法:

SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = isoFormat.parse("2010-05-23T09:01:02");

希望这有帮助!