Java中的时间转换

      在用JavaEE中SSH框架技术开发的OA项目中,如果在项目中有会议信息的功能,而且在数据表的设计中,会议时间那列的数据类型是DATETIME类型而不是VARCHAR类型。那么在系统中时间转换是个“头痛”的问题,因为在系统中获取的时间是String类型,而数据表中的DATETIME类型。两者类型不一致,会报异常。所以在页面获取到时间后,就要进行有效的转换。

      一般来说,会议时间我们需要的是日期+小时+分钟,即是哪天的什么时候,类似于2010-09-08  08:30这样的形式。时间要精确到分钟,这样不会出太大的差错,毕竟现在是高效率的社会。在OA系统中,当经理(系统的管理员)发布一条会议信息,也就是向数据库保存一条记录的过程。在Struts 1.x中,我们用Form来封装用户输入的数据,然后由Action拦截,经过处理后调用业务逻辑层中的方法保存到数据库中。在Action中,我们应该如何处理String类型向DATETIME类型的转换呢?

     首先,我们从Form中分别取出封装的时间数据,然后合并成类似于2010-09-08  08:30这种形式的格式,在此时我们把合并后的变量名取为dataStart。但此时它是String类型,直接封装在实体类中会报错。在此我们用Java提供的SimpleDateFormat 类定义一个时间格式,代码如下:SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd hh:mm");,此时也new出了SimpleDateFormat的一个对象。这样,我们就可以调用对象的parse(String obj)的方法来转换了,转换后的数据类型是Date,封装后保存到数据库中就不会出错了。parse()方法需要一个String类型的参数,我们就把刚才时间合并后的变量dataStart传递过去即可。我们就定义一个Date类型的变量startTime,来接收转换后的值。代码如下:Date startTime = fm.parse(dateStart);。

      在转换的过程中,会报一个ParseException的转换异常。如果不用try…catch...捕获异常,那就要用throws关键字把异常抛出去即可。当然,也许你会问,在Action中时间经过转换是Date类型,而在数据表中设计的是DATETIME类型。两者也不是一致的数据类型,怎么保存啊?呵呵……,在此说明你在时间类型的转换已经看懂了许多了。其实你的担心是多余的,因为数据库有会根据Date类型的数据自动转换成DATETIME类型的数据后再保存的。当然,我在此说的是在SQL Server 2005的数据库中的,其它诸如:Oracle、MySQL等数据库是不是与SQL Server 2005的一样,暂时我还没有太多的学习。

      有关的方法转换截图如下:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值