改变报表中的日期格式(YYYY年M月)

    技术2026-05-11  1

    HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Cannot format given Object as a Date org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) root cause java.lang.IllegalArgumentException: Cannot format given Object as a Date java.text.DateFormat.format(Unknown Source) java.text.Format.format(Unknown Source) com.lyang.governmentbill.CCI.jsp.Bean.ReportManagerBean.reportManagerBean(ReportManagerBean.java:115) org.apache.jsp.reportList_jsp._jspService(reportList_jsp.java:141) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.

     

    代码如下:while (rs.next()) { row = sheet.createRow(i + 1); i++; for (int j = 1; j <= columns.length; j++) { cell = row.createCell((short) (j-1)); cell.setEncoding((short) 1); boolean dataFlag=false; for(int k = 0;k<dealColumns.length;k++){ if(dealColumns[k].equals(String.valueOf(j-1))){ dataFlag=true; style1.setDataFormat((short)4); } } if(dataFlag){ cell.setCellValue(rs.getDouble(j)); cell.setCellStyle(style1); }else{ if(j==7){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月"); String strDate =sdf.format(DateFormat.getDateInstance().parse(rs.getString(7))); cell.setCellValue(strDate); }else{ cell.setCellValue(rs.getString(j)); String date=rs.getString(7); cell.setCellStyle(style); } } } } } catch (SQLException e1) { e1.printStackTrace(); } } catch (SQLException e) { e.printStackTrace(); } finally{ try { rs.close(); stat.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } }

     

    导致异常的原因:

    SimpleDateFormat 的format方法是:public final java.lang.String format(java.util,Date org0); format方法应该传一个Date类型的参数,而不是String 或者是其它的。 

    应该这样写: 

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月"); String strDate =sdf.format(DateFormat.getDateInstance().parse(rs.getString(7)));

     


     

      G 年代标志符  y 年  M 月  d 日  h 时 在上午或下午 (1~12)  H 时 在一天中 (0~23)  m 分  s 秒  S 毫秒  E 星期  D 一年中的第几天  F 一月中第几个星期几  w 一年中第几个星期  W 一月中第几个星期  a 上午 / 下午 标记符   k 时 在一天中 (1~24)  K 时 在上午或下午 (0~11)  z 时区

     

    最新回复(0)