java中java.util.Date和java.sql.Date之间的转换

1、util.Date和sql.Date之间的关系

我们来看下java.sql.Date的源码

package java.sql;

import java.time.Instant;
import java.time.LocalDate;


public class Date extends java.util.Date {}

从以上源码可以看出,sql.Date是util.Date的子类

2、util.Date的构造方法

以下是java.util.Date的方法部分方法图示:

img

可以看到,主要有两个构造方法推荐使用,添加了img标记的表示这些方法已经被废弃,不推荐使用。

所以对于,java.util.Date 常用的构造方法有:

Date()

Date(long) 方法参数为一个长整型的毫秒值

其中,java.util.Date中还有一个重要的方法:就是获取当前时间的毫秒值

public class Date
    implements java.io.Serializable, Cloneable, Comparable<Date>
{
/**
     * Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT
     * represented by this <tt>Date</tt> object.
     *
     * @return  the number of milliseconds since January 1, 1970, 00:00:00 GMT
     *          represented by this date.
     */
    public long getTime() {
        return getTimeImpl();
    }
}

从以上源码可以看到,该方法是public的,所以,它的子类sql.Date也是可以继承该方法的。

3、sql.Date的构造方法

以下是java.sql.Date的方法部分方法图示:

img

可以看到,sql.Date主要有一个构造方法:Date(long)

4、util.Date和sql.Date之间的转换

// 1) 创建java.util.Date的对象

java.util.Date utilDate?= new java.util.Date();



// 2)将java.util.Date转成java.sql.Date

long datems? = utilDate.getTime();

java.sql.Date? sqlDate = new java.sql.Date(datems);



// 3)将 java.sql.Date 转成 java.util.Date

long datems2 = sqlDate.getTime();

java.util.Date? utilDate = new java.util.Date(datems2);

看下面只要是为了看一下运行效果

原文链接:https://blog.csdn.net/engerla/article/details/81298645 感谢!!!

Java中有两个Date类,一个是java.util.Date通常情况下用它获取当前时间或构造时间,另一个是java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分。两个类型的时间可以相互转化。

util.Date转sql.Date
代码:

        Date utilDate = new Date();//util.Date
        System.out.println("utilDate : " + utilDate);
        //util.Date转sql.Date
        java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
        System.out.println("sqlDate : " + sqlDate);12345

运行结果:
这里写图片描述
从运行结果看到util.date转成sql.date之后,只有年月日,没有时分秒。下面给大家看点东西就知道为什么会这样了

java.sql包下给出三个与数据库相关的日期时间类型:
    Date:表示日期,只有年月日,没有时分秒。会丢失时间;
    Time:表示时间,只有时分秒,没有年月日。会丢失日期;
    Timestamp:表示时间戳,有年月日时分秒,以及毫秒。

代码

        Date utilDate = new Date();//util utilDate
        System.out.println("utilDate : " + utilDate);
        Timestamp sqlDate = new Timestamp(utilDate.getTime());//uilt date转sql date
        System.out.println("sqlDate : " + sqlDate);1234

运行结果:
这里写图片描述
这样就有时分秒了

sql.Date转util.Date
触类旁通,就直接上代码了
代码

        System.out.println("*********util.Date转sql.Date*********");
        Date utilDate = new Date();//util.Date
        System.out.println("utilDate : " + utilDate);
        Timestamp sqlDate = new Timestamp(utilDate.getTime());//util.Date转sql.Date
        System.out.println("sqlDate : " + sqlDate);

        System.out.println("*********sql.Date转util.Date*********");
        System.out.println("sqlDate : " + sqlDate);
        Date date = new Date(sqlDate.getTime());//sql.Date转util.Date
        /*
        java.util.Date date = new java.util.Date(sqlDate.getTime());
         */
        System.out.println("utilDate : " + date);12345678910111213

运行结果:
这里写图片描述
同时util.Date和sql.Date都可以用SimpleDateFormat格式化
代码

        Date utilDate = new Date();//uilt.Date
        System.out.println("utilDate : " + utilDate);

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("format : " + format.format(utilDate));

        System.out.println("**********************************************");

        Timestamp sqlDate = new Timestamp(utilDate.getTime());//uilt.Date转sql.Date
        System.out.println("sqlDate : " + sqlDate);
        System.out.println("format : " + format.format(sqlDate));

运行结果:
这里写图片描述

posted @ 2023-06-22 19:02  哩个啷个波  阅读(515)  评论(0编辑  收藏  举报