您的位置:首页 > 数据库

date类型只取时间前台输入的数据如何在数据库中修改增加

2017-04-20 16:33 369 查看
       在写日历模块的时候遇到一个很有意思的问题,前台用的日历插件,只取时间部分,不需要年月日,数据库对应字段类型为date,但对数据的操作却不能成功,检查代码没有问题,几乎将代码重写仍然不能解决。

       最后发现是因为date类型默认在数据库中保存时必须带年月日,单时间保存不了(oracle数据库),于是果断将数据库对应数据类型改为String,应为前台页面提交到后台的数据类型都会自动转为String,所以设置成String类型;这时候发现问题解决啦。为方便使用,查阅资料发现可以编写一个类,重写DefaultTypeConverter方法可以做到类型在date和String之间自由转换;该方法如下:

  package huashen.commons;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Map;

import ognl.DefaultTypeConverter;

public class DateConverter extends DefaultTypeConverter {

    public Object convertValue(Map context, Object value, Class toType) {

        try {

            if (toType == Date.class) { // 如果想转换的是Date类型时将做以下操作

                // 因为在Struts2里会表单传过来的非字符串数据转换为String[],所以这里得取第一个值

                String dataStr = ((String[]) value)[0];

                SimpleDateFormat f;

                switch (dataStr.length()) {

                case 10:

                     f= new SimpleDateFormat("yyyy-MM-dd"); // 转换为自己想要日期格式

                    return f.parse(dataStr);                    

                case 13:

                    f = new SimpleDateFormat("yyyy-MM-dd HH"); // 转换为自己想要日期格式

                    return f.parse(dataStr);

                case 16:

                    f = new SimpleDateFormat("yyyy-MM-dd HH:mm"); // 转换为自己想要日期格式

                    return f.parse(dataStr);

                case 19:

                    f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 转换为自己想要日期格式

                    return f.parse(dataStr);

                default:

                    break;

                }

                

            } else if (toType == String.class) {

                String dataStr = ((Date) value).toString();

                return dataStr;

            }

        } catch (ParseException e) {

            e.printStackTrace();

        }

        return null;

    }

}

还需要在src下添加一个配置文件:xwork-conversion.properties,其内容为:java.util.Date=huashen.commons.interceptor.DateConverter

这样任何日期类型都可以实现灵活运用啦;希望对大家有用;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐