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

我们使用的是以本地时间为参考标准的 
------------------------------------------ 
生成日期对象 
方法一: 
除了父类,三个子类均可通过给其发送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. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值