Java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和总结
java.lang.Object
....|__java.util.Date
..........|__java.sql.Date/java.sql.Timestamp /java.sql.Time
【父类】java.util.Date日期格式为:年月日时分秒
【子类】java.sql.Date日期格式为:年月日[只存储日期数据不存储时间数据]
【子类】java.sql.Time日期格式为:时分秒
【子类】java.sql.Timestamp日期格式为:年月日时分秒纳秒(毫微秒)
针对不同的数据库选用不同的日期类型
·Oracle的Date类型,只需要年月日,选择使用java.sql.Date类型
·MS Sqlserver数据库的DateTime类型,需要年月日时分秒,选择java.sql.Timestamp类型
------------------------------------------
四种对象内部均使用系统时间作为标准数据
·系统时间:自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数,即格林尼治标准时间(GMT)
·本地时间:根据时区不同打印出来的时间[当时区为GMT+0时,系统时间与本地时间相同]
我们使用的是以本地时间为参考标准的
------------------------------------------
String日期格式转换成Date日期格式
//java.util.Date 格式化
SimpleDateFormat f_utilDate=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String str="2011-5-31 14:40:50";
try {
java.util.Date utilDate=f_utilDate.parse(str);
System.out.println("java.util.Date:"+f_utilDate.format(utilDate));
} catch (ParseException e) {
e.printStackTrace();
}
//java.sql.Date 格式化(没有时分秒)
SimpleDateFormat f_sqlDate=new SimpleDateFormat("yyyy-MM-dd");
java.sql.Date sqlDate=java.sql.Date.valueOf("2014-11-20");
System.out.println("java.sql.Date:"+f_sqlDate.format(sqlDate));
//java.sql.Time sqltime时间格式的转换
SimpleDateFormat f_sqlTime=new SimpleDateFormat("hh:mm:ss");
java.sql.Time sqltime = java.sql.Time.valueOf("13:44:53");
System.out.println("java.util.Timestamp:"+f_sqlTime.format(sqltime));
//java.sql.Timestamp
SimpleDateFormat f_sqlTimesDate=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
java.sql.Timestamp sqlTimestamp=java.sql.Timestamp.valueOf("2011-5-31 14:40:50.200");
System.out.println("java.util.Timestamp:"+f_sqlTimesDate.format(sqlTimestamp));
//java.util.Date 转换成 java.sql.Date 格式
try{
SimpleDateFormat DateFormate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date date1 = DateFormate.parse("2011-5-31 14:40:50");
java.sql.Date sqlDate0 = new java.sql.Date(date1.getTime());
System.out.println(DateFormate.format(sqlDate0));
}catch (Exception ex) {
System.out.println(ex.getMessage());
}
//java.sql.Date 转换成 java.util.Date 格式
java.sql.Date sqlDate1=java.sql.Date.valueOf("2005-12-12");
java.util.Date utilDate1=new java.util.Date(sqlDate1.getTime());
System.out.println("java.sql.Date 转换成 java.util.Date 格式:"+f_utilDate.format(utilDate1));
//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,然后再转换成所需的格式
示例:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;
import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;
public class a {
public static void main(String[] args) throws ParseException{
try{
String dateString = "2010-08-20 12:00:00.125";
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS",Locale.ENGLISH);//设定格式
dateFormat.setLenient(false);
java.util.Date utilDate = dateFormat.parse(dateString);//util类型
java.sql.Timestamp dateTime = new java.sql.Timestamp(utilDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型
System.out.println(dateTime);
}catch(Exception ex){
ex.printStackTrace();
}
}
}
获取Date 的年月日
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date1=sdf.parse("2017-12-25");
Calendar calendar1=Calendar.getInstance();
calendar1.setTime(date1);
int year=calendar1.get(Calendar.YEAR);
int month=calendar1.get(Calendar.MONTH);
int day=calendar1.get(Calendar.DAY_OF_MONTH);