各位前辈好:
我是一学会 , 现在正在做一个小项目,遇到了一些小问题 麻烦各位了。。。
我用的是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;
}
}