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

Date 专栏收录该内容
1 篇文章 0 订阅

前言

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

两者联系

这里写图片描述
图片来自于其他博客,具体忘啦

共同点:都有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 两种都可以

  • 0
    点赞
  • 0
    评论
  • 12
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

cherry_xiu

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值