[bug] - 關於poi導入excel時間格式會減少8小時的問題.


這個bug發生在使用poi組件導入導出excel時,(這里是導入)

首先在excel中的格式設定是

yyyy-mm-dd hh:mm:ss

通過配套使用ExcelUtil中 getCellValue(Cell cell)獲取單元格的類型

經過判定后,時間格式會進入:

該getCellValue(Cell cell)返回類型為Object

cellValue = null;
case NUMERIC:

if (HSSFDateUtil.isCellDateFormatted(cell)){
cellValue = cell.getDateCellValue();

}

這種獲取時間的方式會少8個小時.

經過查看poi的DateUtil源碼改為:

            switch (cell.getCellType())
            {
                case NUMERIC: // 數字
                    if (HSSFDateUtil.isCellDateFormatted(cell))
                    {
                        double numericValue = cell.getNumericCellValue();
                        TimeZone zone = TimeZone.getTimeZone("GMT");
                        Date javaDate = DateUtil.getJavaDate(numericValue, zone);
                        System.out.println("javaDate:"+javaDate);
                        cellValue = javaDate;
                    }
                    else

異常消失,時間正常.

所以采用了上面設置timezone.並通過DateUtil(poi的)getJavaDate傳入該zone即可.

這里可以將bean實體類上的時間GMT+8:00給取消了,參考: https://www.cnblogs.com/ukzq/p/9937002.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM