mysql是datetime类型,java是String类型,jsp页面上显示多了个“.0”

找了好久,网上都是千篇一律的copy,说是下面的处理方式:使用<s:date>标签,有一个format属性,就是用来输出指定时间格式的例如:<s:datename="pu... 找了好久,网上都是千篇一律的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页面通过标签处理,不是在后台查询处理
展开
 我来答
芦纪泉4120054
2015-07-24 · 超过21用户采纳过TA的回答
知道答主
回答量:66
采纳率:0%
帮助的人:35万
展开全部
datetime类型的数据在数据库存储的时候是精确到毫秒的,因为你在存取的时候只精确到额秒,所以数据库默认的给添加了一个.0。所以你在后台取出时是带.0的。如果你要在页面上也看到精确到分的,那你在后台截取字符串然后在传到前台就好了
百度网友1208e6f
2018-08-01 · 超过19用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:10.8万
展开全部
给你一个简单粗暴的办法 subSring 我也遇到过 起先没注意后来发现会有一个.0 如果找到办法记得告诉我下
后台 str.substring(0, 10)
在jsp页面 <%获取
然后substring
%>
但是这样你传值的时候就要用String 在页面接收也用String 如果非得用时间 那只能在jsp页面格式化 但是我个人觉得比较麻烦 建议使用String
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
度爷啊
2015-07-20
知道答主
回答量:9
采纳率:100%
帮助的人:4.9万
展开全部
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。
希望能对 你有用
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-06-15
展开全部
自己重新格式化

~
~
~
~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
彭珂的课堂
2018-07-30 · IT资讯、技能教学、学习经验分享。
彭珂的课堂
采纳数:98 获赞数:343

向TA提问 私信TA
展开全部

在你的实体类,getDate()方法中加入以下代码就可以了啊!

date = date.substring(0,date.length()-2);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式