日期类型的数据,格式转换的几种实现方式比较

例子:一个数据表字段op_date,数据类型为datetime(现在用的postgres是timestamp),在经过java从数据库取出后,

前端展示希望是下面这个样子的:

“2010-08-18” 或

“2010-08-18 08:45”。

大家知道,java的ResultSet的getDate默认取到的值格式如“2010-08-18 08:01:38.0”。如果要只取date部分,或者正确显示time。就要经过处理。

 

java用了近10年,以前都是java里做formatter。仿佛都成了习惯,从未想过有没有其它更简便的方法。

现在前端改用Flex,数据库改用postgres,在开发的过程中因为觉得代码封装得不够好,这么个简单、非常常用的需求用起来过于不方便,所以开始思考起了这个问题。

总共有3种方式(3个地方)可以用来做格式化:

1、前端。Flex。LabelFunction。

之前同事考虑的方式是这一种,所有的位置加LabelFunction,用as的DateFormatter。

2、中间层。Java。SimpleDateFormat。

以前开发的架构在这里封装了一下,对sql做query的时候就可以指定日期类型的格式参数。用着也还方便。在新的平台里面没有,封装的QueryForList只是做了getDate。

3、数据库。Postgres。sql直接转换成String。

想到这个的时候就豁然开朗,对啊,这才是终极方案,方便又漂亮。以前一直没想过,思维定势了吧。

一方面虽然觉得LabelFunction太麻烦,到处要去踩一脚,而且有的控件没有LabelFunction,得另行处理,这时候想到的就是java去做formatter。就是没想到sql里转换成String类型就ok。而且postgres转换类型超级方便: select op_date :: varchar(10)就搞定了,想显示几位就几位,简单又直接…帅呆了,哈

posted @ 2010-08-18 09:25  wala  阅读(843)  评论(0编辑  收藏  举报