java.util.Date 与 java.sql.Date 与 String 的转换

文章目录

      • 前言
      • 两者联系
      • java.util.Date 与 java.sql.Date
      • Date 转为 String (以下的 sqlDate 是通过 utilDate 转换的)
      • String 转Date(传入的参数格式多了时分秒,可以截掉,少了会报错)
      • 总结

前言

主要讲述java.util.Date 与 java.sql.Date的区别于转换

两者联系

java.util.Date 与 java.sql.Date 与 String 的转换_第1张图片
图片来自于其他博客,具体忘啦

共同点:都有getTime方法返回毫秒数,可以直接构建

不同点:

1、java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分,一般在读写数据库的时候用,PreparedStament的setDate()的参数和ResultSet的getDate()方法的都是java.sql.Date

2、java.util.Date是在除了SQL语句的情况下面使用,一般是日常日期字段
3、java.util.Date 是 java.sql.Date 的父类,即:继承关系:java.lang.Object --》 java.util.Date --》 java.sql.Date

java.util.Date 与 java.sql.Date

//java.sql.Date转为java.util.Date
//java.sql.Date date=new java.sql.Date(); 显示异常 connot resolve constractor 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.sql.Time sTime=new java.sql.Time(utilDate.getTime());
java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());

own’s

Date date = new Date();
System.out.println("utilDate为" + date);

java.sql.Date sqlDate = new  java.sql.Date(date.getTime());
System.out.println("sqlDate为" + sqlDate);

java.sql.Time sTime=new java.sql.Time(date.getTime());
System.out.println("sTime" + sTime);

//utilDate为Thu Aug 02 17:33:53 CST 2018
//sqlDate为2018-08-02
//sTime17:33:53

ps: getTime()是获得时间戳,若直接用时间戳转换为Date格式,需要用Long.valueOf()

new java.sql.Date(Long.valueOf("1534403259275"));//2018-08-16
new java.util.Date(Long.valueOf("1534403259275"));//Thu Aug 16 15:07:39 CST 2018

Date 转为 String (以下的 sqlDate 是通过 utilDate 转换的)

yyyy-MM-dd hh:mm:ss


//date:Thu Aug 02 17:33:53 CST 2018
//sqlDate:2018-08-02

SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String sdf1 = f.format(date);
System.out.println("utilsdf1+" + sdf1);

String sdf2 = f.format(sqlDate);
System.out.println("sqlsdf2+" + sdf2);

String  str = "2018-03-02";
String sdf3 = f.format(str);
System.out.println("sdf3+" + sdf3);

//utilsdf1+2018-08-02 05:37:42
//sqlsdf2+2018-08-02 05:37:42
//Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date

yyyy-mm-dd


//date:Thu Aug 02 17:33:53 CST 2018
//sqlDate:2018-08-02


SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd");
String sdf1 = f.format(date);
System.out.println("utilsdf1+" + sdf1);

String sdf2 = f.format(sqlDate);
System.out.println("sqlsdf2+" + sdf2);

 String  str = "2018-03-02";
String sdf3 = f.format(str);
System.out.println("sdf3+" + str);


//utilsdf1+2018-08-02
//sqlsdf2+2018-08-02
//Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date

String 转Date(传入的参数格式多了时分秒,可以截掉,少了会报错)

yyyy-MM-dd

SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd");
String  str = "2018-03-02";
Date sdf3 = f.parse(str);
System.out.println("sdf3+" + sdf3);
//sdf3+Fri Mar 02 00:00:00 CST 2018(返回utilDate)

SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd");
String  str = "2018-03-02 12:12:12";
Date sdf3 = f.parse(str);
System.out.println("sdf3+" + sdf3);
//sdf3+Fri Mar 02 00:00:00 CST 2018

yyyy-MM-dd hh:mm:ss

SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String  str = "2018-03-02";
Date sdf3 = f.parse(str);
System.out.println("sdf3+" + sdf3);
//Exception in thread "main" java.text.ParseException: Unparseable date: "2018-03-02"


SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String  str = "2018-03-02 12:12:12";
Date sdf3 = f.parse(str);
System.out.println("sdf3+" + sdf3);
//sdf3+Fri Mar 02 00:12:12 CST 2018(变成了utilDate格式)

总结

1.sqlDate 是用于数据库操作,没有时分秒,如2018-09-09,utilDate 用于日常字段,如 Thu Aug 02 17:33:53 CST 2018 ,sqlDate 与 utilDate 相互转换通过 getTime() 方法。
2.Date 与 String 的转换
2.1 Date 转 String :sqlDate 与 utilDate 可以转成任意格式的 String
2.2 String 转 Date:传入个String 格式没有时分秒,sdf 也不能有时分秒;传入个String 格式有时分秒,sdf 两种都可以

你可能感兴趣的:(Date)