struts1中的时间类型转换器怎么弄

各位前辈好:

 

           我是一学会 , 现在正在做一个小项目,遇到了一些小问题 麻烦各位了。。。

 

 

 

          我用的是struts1.2和hibernate框架,在前台用户输入了一个时间,格式为 “yyyy-MM-dd”的,我要把这个字段插入数据库(times字段),数据库中的times字段是datetime类型的,而我现在在后台获取的是个string类型的,插入数据库时,他说  字符类型向datetime类型转化失败  roolback了  失败~~

 

          听老师说可以写个时间转化器,那要怎么写呢?如何使用呢?

希望各位指点

时间转换器的类可以这样写,但是便于在项目中易于维护,你最好将他放在一个Servlet中,然后将Servlet配置在web.xml中,使得项目在启动后可以对任何页面的时间进行转换。
时间转换器:
[code="java"]
package com.xiaosu;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.beanutils.Converter;

public class UtilDateConverter implements Converter {

private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

public Object convert(Class type, Object value) {
    if (value == null) {
        return value;
    }
    if (value instanceof Date) {
        return value;
    }
    if (value instanceof String) {
        try {
            return format.parse((String) value);
        } catch (ParseException ignore) {
        }
    }
    return null;
}

}[/code]
Servlet类:
[code="java"]
package com.xiaosu;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.apache.commons.beanutils.ConvertUtils;

public class InitServlet extends HttpServlet {
@Override
public void init() throws ServletException {
//注册日期类型的转换器
ConvertUtils.register(new UtilDateConverter(), Date.class);
}
}[/code]
web.xml配置:

initServlet
com.xiaosu.InitServlet
3

学习,明天继续关注

我好像遇到过这样的问题,我用的是mysql数据库
我在实体里面定义了
private String addUser; // 发布人
private String addDate;// 发布时间
private String updateUser;// 更改人
private String updateDate;// 更改日期
private String overTime;// 结束时间
在映射文件文件里面这样写。


    <property name="addDate" type="java.lang.String">
        <column name="addDate"  not-null="true"/>
    </property>

    <property name="overTime" type="java.lang.String">
        <column name="overtime" not-null="true"/>
    </property>

在action里面里面一个修改方法里面

     String overTimeStr = getParam("overTime");//从页面获得填写的时间,采用的是日历控件。   
直接赋给对象,对对象操作就行了,

后来 换了oracle 这样就不行了,貌似是数据库的问题。
另外给你个公用的类 希望对你有帮助。
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class PublicMethod {
/**
* value = yyyy-MM-dd HH:mm:ss
/
public static final String FULL_STAND_FORMAT = "yyyy-MM-dd HH:mm:ss";
/
*
* value = yyyyMMddHHmmss
/
public static final String FULL_SPECIAL_FORMAT = "yyyyMMddHHmmss";
/
*
* value = yy-MM-dd HH:mm"
/
public static final String SIMPLE_STAND_FORMAT = "yy-MM-dd HH:mm";
/
*
* value = yyyy-mm-dd
*/
public static final String SIMPLE_STAND_DATE = "yyyy-mm-dd";

public static String getCurrentDate(String pattern){
    return dateFormat(new Date(), pattern);
}
/**
 * return format yyyy-MM-dd HH:mm:ss
 * @param date
 * @return 
 */
public static String dateFormat(Date date){
    return dateFormat(date, FULL_STAND_FORMAT);
}

public static String dateFormat(Date date, String pattern){
    if(null==date){return null;}
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    String result = sdf.format(date);
    return result;
}

public static Date intConvertDate(int year, int month, int day, 
        int hour, int minute, int second){
    Calendar ca = Calendar.getInstance();
    ca.set(year, month, day, hour, minute, second);
    return ca.getTime();
}

public static Date strConvertDate(String str) throws ParseException{
    DateFormat df = DateFormat.getDateInstance();
    return df.parse(str);
}

public static Calendar strConverCalendar(String source, String pattern) throws ParseException{
    SimpleDateFormat df = new SimpleDateFormat(pattern);
    df.parse(source);
    return df.getCalendar();
}

public static Calendar strConverCalendar(String source) throws ParseException{
    SimpleDateFormat df = new SimpleDateFormat();
    df.parse(source);
    return df.getCalendar();
}
/**
 * 设置某一天的最大时间 23:59:59
 * @param str
 * @return
 * @throws ParseException
 */
public static String getDayMaxTime(String str) throws ParseException{
    String result = str + " 23:59:59";
    return result;
}

}