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

来源:互联网 发布:linux中pause 编辑:程序博客网 时间:2024/05/16 19:00

       在写日历模块的时候遇到一个很有意思的问题,前台用的日历插件,只取时间部分,不需要年月日,数据库对应字段类型为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

这样任何日期类型都可以实现灵活运用啦;希望对大家有用;





0 0
原创粉丝点击