java.util.Date、java.sql.Date、java.sql.Time、java...

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时,系统时间与本地时间相同] 

我们使用的是以本地时间为参考标准的 
------------------------------------------ 
生成日期对象 
方法一: 
除了父类,三个子类均可通过给其发送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代码  复制代码
  1. public class DateTest  {   
  2.     public static void main(String[] args) throws ParseException{   
  3.         try{   
  4.              String dateString = "2010-08-20 12:00:00.125";   
  5.              DateFormat dateFormat;   
  6.              dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS",Locale.ENGLISH);//设定格式   
  7.              dateFormat.setLenient(false);   
  8.              java.util.Date timeDate = dateFormat.parse(dateString);//util类型   
  9.              java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型   
  10.              System.out.println(dateTime);   
  11.         }catch(Exception ex){   
  12.             ex.printStackTrace();   
  13.         }        
  14.     }   
  15. }  

java.util.Date和java.sql.Date的区别及应用

   java.util.Date 就是在除了SQL语句的情况下面使用
java.sql.Date 是针对SQL语句使用的,它只包含日期而没有时间部分
它都有getTime方法返回毫秒数,自然就可以直接构建
java.util.Date d = new java.util.Date(sqlDate.getTime());
...

--------------------------------------------------------------------------------
java.util.Date 是 java.sql.Date 的父类(注意拼写)
前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他
后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date 
转换是
java.sql.Date date=new Java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
反过来是一样的

--------------------------------------------------------------------------------
继承关系:java.lang.Object --》 java.util.Date --》 java.sql.Date
具体的转换关系就是java.util.Date d=new java.util.Date (new Java.sql.Date());

--------------------------------------------------------------------------------
sql.date,一般是在数据库的时间字段,util.date一般是日常日期字段

--------------------------------------------------------------------------------
java.sql.Date主要是用于sql中的!
而java.util.Date用语一般的环境下都行!

--------------------------------------------------------------------------------

SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
       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());
      System.out.println(utilDate.getYear());

这里所有时间日期都可以被SimpleDateFormat格式化format()

f.format(stp);f.format(sTime);f.format(sqlDate);f.format(utilDate)

java.sql.Date sqlDate=java.sql.Date.valueOf("2005-12-12");
      
       utilDate=new java.util.Date(sqlDate.getTime());

--------------------------------------------------------------------------------------------------

另类取得年月日的方法:

import java.text.SimpleDateFormat;

import java.util.*;

java.util.Date date = new java.util.Date();

//如果希望得到YYYYMMDD的格式

SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD");

String dateFormat=sy1.format(date);

//如果希望分开得到年,月,日

SimpleDateFormat sy=new SimpleDateFormat("yyyy");

SimpleDateFormat sm=new SimpleDateFormat("MM");

SimpleDateFormat sd=new SimpleDateFormat("dd");

String syear=sy.format(date);

String smon=sm.format(date);

String sday=sd.format(date);

你可能感兴趣的:(java.util.Date、java.sql.Date、java.sql.Time、java...)