這個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