黑马程序员技术交流社区
标题:
关于日期转换的问题
[打印本页]
作者:
蒋名勇
时间:
2013-4-23 12:22
标题:
关于日期转换的问题
本帖最后由 蒋名勇 于 2013-4-25 01:24 编辑
因为数据库里面保存时间的都是date类型的,而java代码中插入数据时大都是以字符串形式输入,然后接受数据库的数据输出显示也一般都是以字符串的形式,而且java中的date有有sql.date和util.date,所以我很多时候不知道用哪个好,当时老师说的时候也没有听仔细,所以,请大侠们指教一下,怎么样在java代码和数据库之间转换,不要使用to_char(),to_date(),或者是sqlserver的Convert(),而是实体类和数据库表对应的都是date类型,在此先谢过咯
作者:
薛淑凯
时间:
2013-4-23 15:06
问题不是太懂,还没学到数据库,在网上找了找,不知道有没有帮助,算是抛砖引玉了
关于sql.date()的说明
为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将时间、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。
也就是只有日期了,没了时间
java.sql.Date date=new Java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
这就完成了sql.Date()到util.Date()转化
作者:
李志敏
时间:
2013-4-23 22:49
那就直接存成数字字符串就行了 写几个方法 用的时候想转成什么格式就转成什么格式{:soso_e113:}
作者:
陈湘林
时间:
2013-4-24 00:30
【父类】java.util.Date日期格式为:年月日时分秒
【子类】java.sql.Date日期格式为:年月日[只存储日期数据不存储时间数据]
【子类】java.sql.Time日期格式为:时分秒
【子类】java.sql.Timestamp日期格式为:年月日时分秒纳秒(毫微秒)
针对不同的数据库选用不同的日期类型
·Oracle的Date类型,只需要年月日,选择使用java.sql.Date类型
·MS Sqlserver数据库的DateTime类型,需要年月日时分秒,选择java.sql.Timestamp类型
生成日期对象
方法一:
除了父类,三个子类均可通过给其发送valueOf()消息,生成所需格式的对象。
java.sql.Date sqlDate = java.sql.Date.valueOf("2010-08-20");
java.sql.Time time = java.sql.Time.valueOf("13:44:53");
java.sql.Timestamp time = java.sql.Timestamp.valueOf("2010-08-20 14:06:27.186");
方法二:
java.util.Date——>java.sql.Date
new java.sql.Date(new java.util.Date().getTime());
new java.util.Date(new java.sql.Date().getTime());//此处IDE报错
java.util.Date——>java.sql.Timestamp
new java.sql.Timestamp(new java.util.Date().getTime());//此处IDE报错
java.util.Date——>java.sql.Time
new java.sql.Time(new java.util.Date().getTime());
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
我们可以使用DateFormat处理字符串来定义时间日期的格式
注:String都是先转换为java.util.Date,然后再转换成所需的格式
Calendar
Calendar calendar=Calendar.getInstance();
//获得当前时间,声明时间变量
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
month = month+1; //[0,11]
int date = calendar.get(Calendar.DATE);
String today = ""+year+"-"+month+"-"+date+"";
String to Date[java.sql.Date]
String to Time[java.sql.Timestamp]
DateFormat dateFormat;
dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
//dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS", Locale.ENGLISH);
//设定格式
dateFormat.setLenient(false);
java.util.Date timeDate = dateFormat.parse(dateString);
//util类型
java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());
//sql类型
// java.sql.Timestamp dateTime = new java.sql.Timestamp
(timeDate.getTime());
//Timestamp类型
Java代码
public class DateTest {
public static void main(String[] args) throws ParseException{
try{
String dateString = "2010-08-20 12:00:00.125";
DateFormat dateFormat;
dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS",Locale.ENGLISH);//设定格式
dateFormat.setLenient(false);
java.util.Date timeDate = dateFormat.parse(dateString);//util类型
java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型
System.out.println(dateTime);
}catch(Exception ex){
ex.printStackTrace();
}
}
}
复制代码
作者:
harborbest
时间:
2013-4-24 08:45
java.util.Date是在除了SQL语句的情况下使用的。
java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分
它们都有getTime方法返回毫秒数,自然就可以直接构建。 java.util.Date 是 java.sql.Date 的父类,前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用它,后者之后在读写数据库的时候用它,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date。
java.sql.Date转为java.util.Date
java.sql.Date date=new java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
复制代码
java.util.Date转为java.sql.Date
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.sql.Time sTime=new java.sql.Time(utilDate.getTime());
java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());
复制代码
这里所有时间日期都可以被SimpleDateFormat格式化format()
SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
f.format(stp);
f.format(sTime);
f.format(sqlDate);
f.format(utilDate)
java.sql.Date sqlDate=java.sql.Date.valueOf(" 2013-4-24");
utilDate=new java.util.Date(sqlDate.getTime());
复制代码
作者:
黄玉昆
时间:
2013-4-24 22:48
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2