整理一这里的一片文章我个人认为讲解的很详细有对 javasqlDate的使用还有困惑的请看
javasqlDate 只存储日期数据不存储时间数据// 会丢失时间数据preparedStatementsetDate( new javasqlDate(dategetTime()))//可以这样来处理preparedStatementsetTimestamp( new javasqlTimestamp(new javautilDate()getTime()))
//想要得到完整的数据包括日期和时间可以这样javautilDate d = resultSetgetTimestamp()//这样处理更合适一些可以避免一些潜在Timestamp 问题javautilDate d = new javautilDate(resultSetgetTimestamp()getTime())自己补的话这样的话往数据库存储的时候可以接收 javautilDate类型 再用getTime()方法得到代表那个Date对象的long值再以这个long值 构造一个Timestamp对象 存进数据库中
从存数据库里取的时候可以先得到Timestamp用他的getTime()方法得到long值再以这个long值构造一个 javautilDate对象这样就可以对这个Date对象操作了不如说 new SimpleTimeFormat(yyyyyMMdd HHmmss)format()等等
整理二用Timestamp来记录日期时间还是很方便的但有时候显示的时候是不需要小数位后面的毫秒的这样就需要在转换为String时重新定义格式
Timestamp转化为StringSimpleDateFormat df = new SimpleDateFormat(yyyyMMdd HHmmss)//定义格式不显示毫秒 Timestamp now = new Timestamp(SystemcurrentTimeMillis())//获取系统当前时间 String str = dfformat(now) 转化为StringTimestampSimpleDateFormat df = new SimpleDateFormat(yyyyMMdd HHmmss)String time = dfformat(new Date()) Timestamp ts = TimestampvalueOf(time)整理三在 ResultSet中我们经常使用的setDate或getDate的数据类型是javasqlDate而在平时java程序中我们一般习惯使用 javautilDate因此在DAO层我们经常会碰到这俩种数据类型的相互转换经过了一个下午的折腾鄙人对两者的转换方法做出了小小总结希望大家不吝指教
两者的关系javalangObject | +——javautilDate | +——javasqlDate从这个图中我们可以知道javasqlDate是从javautilDate继承过来的
相互转换 使用getTime()函数这两个类都提供了getTime()函数用于返回对应的毫秒数(long类型)利用这个函数可以实现转换javautilDate utilDate = new javautilDate(sqlDategetTime()) // sql > util javasqlDate sqlDate = new javasqlDate(utilDategetTime()) // util > sql 使用SimpleDateFormat类实现转换SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类 它允许格式化 (date > text)语法分析 (text > date)和标准化
SimpleDateFormat dateFormat = new SimpleDateFormate(yyyyMMdd HHmmss)javautilDate utilDate = dateFormatparse(sqlDatetoString()) 直接转换由于javasqlDate是从javautilDate中继承过来的所以可以直接用utilDate = sqlDate 另类获得日期的方法SimpleDateFormat sy=new SimpleDateFormat(yyyy)SimpleDateFormat sm=new SimpleDateFormat(MM)SimpleDateFormat sd=new SimpleDateFormat(dd)String syear=syformat(date)String smon=smformat(date)String sday=sdformat(date)ps javautilDate类中的getYear()要加上才可得到实际值getMonth()则要加上