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
这样任何日期类型都可以实现灵活运用啦;希望对大家有用;
最后发现是因为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
这样任何日期类型都可以实现灵活运用啦;希望对大家有用;
相关文章推荐
- 往数据库里添加date(时间)类型的数据
- 数据库Date数据类型在页面展示时如何数据类型转换成String类型
- easyui datetimebox处理【前台传递到后台是string类型,但是后台定义的是java.util.date,如何自动转换数据类型】
- java编程如何实现多条2017-01-16 22:28:11.0这样的时间数据,转换成Date类型Mon Jan 16 22:28:11 CST 2017这样的时间数据
- 数据库中关于datetime、date 、time数据类型比较,及插入日期时间数据格式
- 如何获取sql数据中时间的月份、年份(类型date)
- MySQL中日期类型数据的使用:如何让字段保存记录的创建时间和最后修改时间
- 往数据库里添加date(时间)类型的数据
- 如何把数据库中的String类型的数据在jsp页面上转化为date类型的数据
- 如何解决使用addBatch()和executeBatch()无法批量增加删除修改数据库数据等问题
- java 把string数据转换成date数据存入mysql的问题,如何获取当前时间date存入数据库
- oracle增加一列、修改一列数据类型
- C#如何从数据库里读取iamge类型的数据,让其显示在pictureBox里(整理)
- 如何修改数据库表的创建时间
- JPA中关于MS SQL Server数据库的TimeStamp数据类型如何映射
- oracle数据库有数据如何修改字段类型
- 如何缩短SBS2008的监视数据库历史数据保存时间?
- 如何修改数据库表的创建时间
- mysql命令行命令和SQL语句,MySQL修改删除增加字段类型,字段数据等。。
- 如何修改BIM中数据类型?