java.util.date和java.sql.date,以及jdk1.8新增日期API

1.首先看下java.sql.Date类的相关类图: 

可以看到java.sql.Date是java.util.Date的子类 

  • java.util.Date : 通常情况下用它获取当前时间或构造时间
  • java.sql.Date : 是针对SQL语句使用的,它只包含日期而没有时间部分

区别:
(1)共同点:

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

(2)不同的点:

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.sql.Date和java.util.Date两个类如何使用,以及使用的区别

代码如下:

public class Test {
    public static void main(String[] args) {
                //输出java.util.Date类
                Date date = new Date();
                System.out.println(date);
                //构造并输出java.sql.Date类
                java.sql.Date sqlDate = new java.sql.Date(date.getTime());
                System.out.println(sqlDate);
                //java.sql.Date自动转型java.util.Date
                Date utilDate = sqlDate;
                System.out.println(utilDate);
    }

 输出结果如下:

这里根据结果做个总结:
一.java.sql.Date是java.util.Date的子类,平时服务端接收日期参数一般选用java.util.Date

二.java.sql.Date类没有时分秒,只有年月日

三. java.util.Date类转java.sql.Date类,向下转型,需要调用java.util.Date类的getTime()方法,取得long类型返回值,作为参数转换。

四.java.sql.Date类转java.util.Date类,向上转型,会自动转换,但是数值我们可以很明显的看到,也没有了时分秒。

五.具体使用根据业务需求决定,有的业务时间不要精确到时分秒,有的需要,根据需求使用相应的时间类。

jdk1.8新增日期API

public class Test09 {
    //这是一个main方法,是程序的入口:
    public static void main(String[] args) {
        //1.完成实例化:
        //方法1:now()--获取当前的日期,时间,日期+时间
        LocalDate localDate = LocalDate.now();
        System.out.println(localDate);
        LocalTime localTime = LocalTime.now();
        System.out.println(localTime);
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime);
        //方法2:of()--设置指定的日期,时间,日期+时间
        LocalDate of = LocalDate.of(2010, 5, 6);
        System.out.println(of);
        LocalTime of1 = LocalTime.of(12, 35, 56);
        System.out.println(of1);
        LocalDateTime of2 = LocalDateTime.of(1890, 12, 23, 13, 24, 15);
        System.out.println(of2);
        //LocalDate,LocalTime用的不如LocalDateTime多
        //下面讲解用LocalDateTime:
        //一些列常用的get***
        System.out.println(localDateTime.getYear());//2020
        System.out.println(localDateTime.getMonth());//JUNE
        System.out.println(localDateTime.getMonthValue());//6
        System.out.println(localDateTime.getDayOfMonth());//14
        System.out.println(localDateTime.getDayOfWeek());//SUNDAY
        System.out.println(localDateTime.getHour());//22
        System.out.println(localDateTime.getMinute());//22
        System.out.println(localDateTime.getSecond());//6
        //不是set方法,叫with
        //体会:不可变性
        LocalDateTime localDateTime2 = localDateTime.withMonth(8);
        System.out.println(localDateTime);
        System.out.println(localDateTime2);
        //提供了加减的操作:
        //加:
        LocalDateTime localDateTime1 = localDateTime.plusMonths(4);
        System.out.println(localDateTime);
        System.out.println(localDateTime1);
        //减:
        LocalDateTime localDateTime3 = localDateTime.minusMonths(5);
        System.out.println(localDateTime);
        System.out.println(localDateTime3);
    }
}

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java 中的 java.util.Date 类型和 java.sql.Date 类型可以通过以下方式进行转换: 将 java.util.Date 转换为 java.sql.Date,可以使用 java.sql.Date 的构造函数,如下所示: ``` java.util.Date utilDate = new java.util.Date(); java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); ``` 将 java.sql.Date 转换为 java.util.Date,可以使用 java.sql.Date 的 getTime() 方法,如下所示: ``` java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis()); java.util.Date utilDate = new java.util.Date(sqlDate.getTime()); ``` 需要注意的是,java.sql.Date 类型只能存储日期,不能存储时间。因此,在将 java.util.Date 转换为 java.sql.Date 时,需要将时间部分截断,只保留日期部分。 ### 回答2: 在Java中,java.util.Datejava.sql.Date是两个用于表示日期和时间的类。它们之间的转换可以通过以下方法实现: 要将java.util.Date转换为java.sql.Date,可以使用以下步骤: 1. 首先,使用java.util.Date的getTime()方法获取一个long型的时间戳。 2. 然后,使用java.sql.Date的构造方法,将该时间戳作为参数传入。 例如: ``` java.util.Date utilDate = new java.util.Date(); long timeMillis = utilDate.getTime(); java.sql.Date sqlDate = new java.sql.Date(timeMillis); ``` 要将java.sql.Date转换为java.util.Date,可以使用以下步骤: 1. 首先,创建一个java.sql.Date对象。 2. 然后,使用java.sql.Date对象的getTime()方法获取一个long型的时间戳。 3. 最后,使用java.util.Date的构造方法,将该时间戳作为参数传入。 例如: ``` java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis()); long timeMillis = sqlDate.getTime(); java.util.Date utilDate = new java.util.Date(timeMillis); ``` 需要注意的是,java.sql.Date 继承自 java.util.Date,但它对年月日的处理更为严格。java.sql.Date只保留日期的部分,并将时间部分设为固定值"00:00:00"。 综上所述,通过上述的转换方法,可以在java.util.Datejava.sql.Date之间进行相互转换。 ### 回答3: 要将java.util.Date类型转换为java.sql.Date类型,可以使用java.sql.Date的构造函数。java.sql.Datejava.util.Date的子类,因此可以直接转换。以下是一个示例代码: ```java import java.util.Date; import java.sql.Date; public class DateConversionExample { public static void main(String[] args) { // 创建一个java.util.Date对象 java.util.Date utilDate = new java.util.Date(); // 将utilDate转换为sqlDate java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); // 输出结果 System.out.println("java.util.Date: " + utilDate); System.out.println("java.sql.Date: " + sqlDate); } } ``` 要将java.sql.Date类型转换为java.util.Date类型,可以使用java.sql.Date的getTime()方法,该方法返回一个long类型的毫秒数,然后使用java.util.Date的构造函数将其转换为java.util.Date类型。以下是一个示例代码: ```java import java.util.Date; import java.sql.Date; public class DateConversionExample { public static void main(String[] args) { // 创建一个java.sql.Date对象 java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis()); // 将sqlDate转换为utilDate java.util.Date utilDate = new java.util.Date(sqlDate.getTime()); // 输出结果 System.out.println("java.sql.Date: " + sqlDate); System.out.println("java.util.Date: " + utilDate); } } ``` 这是java.util.Datejava.sql.Date之间的简单转换方法。注意,java.sql.Date只包含日期部分,不包含时间部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值