ssm之八 时间日期格式转换取值

举报
tea_year 发表于 2021/12/29 22:57:57 2021/12/29
【摘要】 在页面上显示所有雇员数据,注意时间格式已经做了转换,点击编辑,去控制器操作 <table class="easyui-datagrid" title="雇员" style="width:700px;height:250px" data-options="method:'get',singleSelect:true"> ...
在页面上显示所有雇员数据,注意时间格式已经做了转换,点击编辑,去控制器操作
 

  
  1. <table class="easyui-datagrid" title="雇员" style="width:700px;height:250px"
  2. data-options="method:'get',singleSelect:true">
  3. <thead>
  4. <tr>
  5. <th data-options="field:'t1',width:80">编号</th>
  6. <th data-options="field:'t2',width:100">产品</th>
  7. <th data-options="field:'t3',width:80,align:'right'">价格</th>
  8. <th data-options="field:'hiredate',width:100">雇佣时间</th>
  9. <th data-options="field:'t4'">操作</th>
  10. </tr>
  11. </thead>
  12. <!-- 写循环; -->
  13. <c:forEach items="${list }" var="emp">
  14. <tr>
  15. <td>${emp.empno }</td>
  16. <td>${emp.ename }</td>
  17. <td>${emp.sal }</td>
  18. <td><fmt:formatDate value="${emp.hiredate }" pattern="yyyy-MM-dd HH:mm:ss"/></td>
  19. <td>
  20. <a href='emp/toAddEmp'>增加</a>
  21. <a href='emp/getEmp/${emp.empno}'>编辑</a>
  22. <a href='emp/${emp.empno}/deleteEmp'>删除</a>
  23. <a href='emp/deleteEmp2?empno=${emp.empno}'>删除2</a>
  24. </td>
  25. </tr>
  26. </c:forEach>
  27. </table>

点击编辑,emp/getEmp/${emp.empno},首先要获得当前编号的员工数据,相关dao层等代码,去系列教程前几章查看,本处不再赘述。

 


  
  1. @RequestMapping("/getEmp/{empno}")
  2. public ModelAndView getEmp(@PathVariable("empno")int empno){
  3. Emp emp=service.getEmp(empno);
  4. ModelAndView mv=new ModelAndView();
  5. mv.addObject("emp",emp);
  6. mv.setViewName("updateEmp");
  7. return mv;//返回出去的话,有数据,有页面;
  8. }

可以看到控制器代码查询完毕数据后,去了updateEmp页面,如图

 

下面我们查看更新页面代码

 


  
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  5. %>
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  7. <html>
  8. <head>
  9. <base href="<%=basePath%>">
  10. <title>My JSP 'addUser.jsp' starting page</title>
  11. <meta http-equiv="pragma" content="no-cache">
  12. <meta http-equiv="cache-control" content="no-cache">
  13. <meta http-equiv="expires" content="0">
  14. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  15. <meta http-equiv="description" content="This is my page">
  16. <link rel="stylesheet" href="easyui/themes/default/easyui.css" type="text/css"></link>
  17. <link rel="stylesheet" href="easyui/themes/icon.css" type="text/css"></link>
  18. <script type="text/javascript" src="easyui/jquery-1.8.3.min.js"></script>
  19. <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
  20. <script type="text/javascript" src="easyui/easyui-lang-zh_CN.js"></script></head>
  21. <!--页面数据emp -->
  22. <body>
  23. <form method="post" action="emp/updateEmp">
  24. e编号:<input type="text" name="empno" value="${emp.empno}" readonly id='empno'/><br/>
  25. 姓名:<input type="text" name="ename" value="${emp.ename }"/><br/>
  26. 工资:<input type="text" name="sal" value="${emp.sal }"/><br/>
  27. 入职:<input type="text" class="easyui-datetimebox" style="width:180px" data-options="showSeconds:true"
  28. name="hiredate" value="${emp.hiredate}"/><br/>${emp.hiredate}
  29. <input type="submit" value="修改"/>
  30. </form>
  31. </body>
  32. </html>


请大家观察下,图1和图2,会发现时间已经出现了问题,为什么呢?我们再更新页面单独输出

${emp.hiredate}代码
 

 

会发现时间报的是Thu Apr 06 00:00:00 CST 2017,是2017年4月6日,时间对,但是格式不对。

原来问题的症结出在这里,datetimebox控件默认格式是yyyy-mm-dd HH:mm:ss,而数据库的格式与之不匹配,因此,需要将数据库格式做下转换才可以。

可以在控制器中增加如下代码:

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String hiredate=sdf.format(emp.getHiredate());

//sdf.setLenient(false);setLenient用于设置Calendar是否宽松解析字符串,如果为false,则严格解析;默认为true,宽松解析
System.out.println(hiredate+"----");
mv.addObject("hiredate", hiredate);

在updateEmp页面,时间值为:${hiredate}即可。如图

其他处理方式:众所周知Oracle数据库中的date与众不同,在Easyui中显示数据库的date类型如果不经过转化为显示为Object。因此需要经过处理。

 

  1. <script type="text/javascript">  
  2. function formattime(val) {  
  3.     var year=parseInt(val.year)+1900;  
  4.     var month=(parseInt(val.month)+1);  
  5.     month=month>9?month:('0'+month);  
  6.     var date=parseInt(val.date);  
  7.     date=date>9?date:('0'+date);  
  8.     var hours=parseInt(val.hours);  
  9.     hours=hours>9?hours:('0'+hours);  
  10.     var minutes=parseInt(val.minutes);  
  11.     minutes=minutes>9?minutes:('0'+minutes);  
  12.     var seconds=parseInt(val.seconds);  
  13.     seconds=seconds>9?seconds:('0'+seconds);  
  14.     var time=year+'-'+month+'-'+date+' '+hours+':'+minutes+':'+seconds;  
  15.         return time;  
  16.     }  
  17. </script>  

 

利用js函数实现转换处理也可以。

 

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/71915603

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。