找了好久,网上都是千篇一律的copy,说是下面的处理方式:使用<s:date>标签,有一个format属性,就是用来输出指定时间格式的例如:<s:date name="publishTime" format="yyyy-MM-dd HH:mm:ss" /><s:date name="birthday" format="yyyy-MM-dd" />yyyy-MM-dd年月日 HH:mm:ss时分秒但要注意两个细微的地方,很多人都倒在这上面:1、"yyyy-MM-dd”中的“MM”一定要大写,不然会不起作用或者时间显示不正常因为在java中,大M表示“月(Month)",而小m表示"分"(minute)2、注意的是后面的"HH"表示24小时制,而如果是"hh",则显示时为12小时制楼主可以自己验证下~~还有一点:s:date标签使用时,一定要是Date类型。如果是String型,数值型等其他类型,可以用以下方法:先在resource文件中定义如下:format.date_medium={0,date,medium}format.date_ymd={0,date,yyyy/MM/dd}format.date_time={0,date,yyyy/MM/dd hh:mm}然后就可以自由的format了:<s:text name="format.date_ymd"><s:param name="value" value="salesDate"/></s:text>但是我研究了许久,发现salesDate后台也得是date类型,如果我传个String类型,会报错“Cannot format given Object as a Date”大家有知道真正的解决方案吗?我想要的是jsp页面通过标签处理,不是在后台查询处理
datetime类型的数据在数据库存储的时候是精确到毫秒的,因为你在存取的时候只精确到额秒,所以数据库默认的给添加了一个.0。所以你在后台取出时是带.0的。如果你要在页面上也看到精确到分的,那你在后台截取字符串然后在传到前台就好了
给你一个简单粗暴的办法 subSring 我也遇到过 起先没注意后来发现会有一个.0 如果找到办法记得告诉我下 后台 str.substring(0, 10)在jsp页面 <%获取 然后substring %>但是这样你传值的时候就要用String 在页面接收也用String 如果非得用时间 那只能在jsp页面格式化 但是我个人觉得比较麻烦 建议使用String
public void add(Emp emp) { getconn(); String sql="insert into emp (empno,ename,job,mgr,hiredate,comm,sal,deptno)" + "values(?,?,?,?,?,?,?,?)"; try { stmt=conn.prepareStatement(sql); stmt.setInt(1,emp.getEmpno()); stmt.setString(2, emp.getEname()); stmt.setString(3, emp.getJob()); stmt.setString(4, emp.getMgr()); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Date date1 = null; try { date1 = sdf.parse(emp.getHiredatestr()); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } java.sql.Date date2=new java.sql.Date(date1.getTime()); stmt.setDate(5, date2); stmt.setString(6, emp.getComm()); stmt.setString(7, emp.getSal()); stmt.setInt(8, emp.getDeptno()); stmt.executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } closeall(); }这是我前几天写的,把String类型转化为Date类型,用的是SimpleDateForma,在为数据库表单建立实体类的时候,为Date 类型的hiredate,多增加了一个String类型的属性hiredatestr。希望能对 你有用