Java8中 LocalDate和java.sql.Date的相互转换操作

 更新时间:2020年12月08日 11:05:07   作者:insping  
这篇文章主要介绍了Java8中 LocalDate和java.sql.Date的相互转换操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

一、简述

首先,Java 8引入了java.time.LocalDate来表示一个没有时间的日期。

其次,使用Java 8版本,还需要更新java.sql.Date,以便为LocalDate提供支持,包括toLocalDate和valueOf(LocalDate)等方法。

二、java.time.LocalDate转换为java.sql.Date

java.sql.Date.valueOf( localDate )

package insping;
public class Test {
 public static void main(String[] args) {
 java.time.LocalDate date = java.time.LocalDate.now();
 System.out.println("java.time.LocalDate = " + date);
 java.sql.Date sqlDate = java.sql.Date.valueOf(date);
 System.out.println("java.sql.Date = " + sqlDate);
 }
}

结果:

java.time.LocalDate = 2017-06-16

java.sql.Date = 2017-06-16

三、java.sql.Date转换为java.time.LocalDate

sqlDate.toLocalDate()

public class Test {
 public static void main(String[] args) {
 java.sql.Date sqlDate = java.sql.Date.valueOf("2017-06-16");
 System.out.println("java.sql.Date = " + sqlDate);
 java.time.LocalDate localDate = sqlDate.toLocalDate();
 System.out.println("java.time.LocalDate = " + localDate);
 }
}

结果:

java.sql.Date = 2017-06-16

java.time.LocalDate = 2017-06-16

补充知识:Java8中 Date和LocalDateTime的相互转换

一、在Java 8中将Date转换为LocalDateTime

方法1:

将Date转换为LocalDatetime,我们可以使用以下方法:

1.从日期获取ZonedDateTime并使用其方法toLocalDateTime()获取LocalDateTime

2.使用LocalDateTime的Instant()工厂方法

示例:

package insping;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class Test {
  public static void main(String[] args) {
    Date date = new Date();
    Instant instant = date.toInstant();
    ZoneId zoneId = ZoneId.systemDefault();
    LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
    System.out.println("Date = " + date);
    System.out.println("LocalDateTime = " + localDateTime);
  }
}

结果:

Date = Fri Jun 16 15:35:26 CST 2017

LocalDateTime = 2017-06-16T15:35:26.970

方法2:

我们也可以使用LocalDateTime的FactoryInput()方法使用系统的默认时区。

LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), zoneId);

二、在Java 8中将LocalDateTime转换为Date

要将LocalDateTime转换回java.util.Date,我们可以使用以下步骤:

1.使用atZone()方法将LocalDateTime转换为ZonedDateTime

2.将ZonedDateTime转换为Instant,并从中获取Date

示例:

package insping;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
public class Test {
  public static void main(String[] args) {
    ZoneId zoneId = ZoneId.systemDefault();
    LocalDateTime localDateTime = LocalDateTime.now();
    ZonedDateTime zdt = localDateTime.atZone(zoneId);
    Date date = Date.from(zdt.toInstant());
    System.out.println("LocalDateTime = " + localDateTime);
    System.out.println("Date = " + date);
  }
}

结果:

LocalDateTime = 2017-06-16T15:38:48.580

Date = Fri Jun 16 15:38:48 CST 2017

以上这篇Java8中 LocalDate和java.sql.Date的相互转换操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring Security加密和匹配及原理解析

    Spring Security加密和匹配及原理解析

    我们开发时进行密码加密,可用的加密手段有很多,比如对称加密、非对称加密、信息摘要等,本篇文章给大家介绍Spring Security加密和匹配及原理解析,感兴趣的朋友一起看看吧
    2023-10-10
  • Java使用正则表达式提取XML节点内容的方法示例

    Java使用正则表达式提取XML节点内容的方法示例

    这篇文章主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Spring Validation中的用户注册、JWT令牌之用户登入功能

    Spring Validation中的用户注册、JWT令牌之用户登入功能

    本文介绍了使用SpringValidation进行用户注册验证和JWT进行用户登录的方法,在用户注册时,通过@Validated注解和@Pattern注解对用户名和密码进行格式校验,并使用Result对象返回验证结果,感兴趣的朋友一起看看吧
    2024-11-11
  • Lucene实现索引和查询的实例讲解

    Lucene实现索引和查询的实例讲解

    下面小编就为大家分享一篇Lucene实现索引和查询的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • 完整的logback配置示例ELK整合包含生成json日志

    完整的logback配置示例ELK整合包含生成json日志

    这篇文章主要为大家介绍了完整的logback配置示例ELK整合包含生成json日志,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • SpringBoot快速接入DeepSeek api(带页面)保姆级教程

    SpringBoot快速接入DeepSeek api(带页面)保姆级教程

    这篇文章主要介绍了如何在Java端接入DeepSeek API,包括申请APIkey、项目结构展示、编写controller和前端界面、以及测试启动项目的过程,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • Java对称与非对称加密算法原理详细讲解

    Java对称与非对称加密算法原理详细讲解

    对称加密算法指加密和解密使用相同密钥的加密算法。对称加密算法用来对敏感数据等信息进行加密,非对称加密算法指加密和解密使用不同密钥的加密算法,也称为公私钥加密
    2022-11-11
  • Java  Option用法详解

    Java  Option用法详解

    Optional类是Java8为了解决null值判断问题,借鉴google guava类库的Optional类而引入的一个同名Optional类,使用Optional类可以避免显式的null值判断,避免null导致的NPE,下面以一些典型场景为例,列出Optional API常用接口的用法,并附上相应代码,感兴趣的朋友一起看看吧
    2024-01-01
  • 详解Spring Boot自动装配的方法步骤

    详解Spring Boot自动装配的方法步骤

    这篇文章主要介绍了详解Spring Boot自动装配的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Mybatis 入门之MyBatis环境搭建(第一篇)

    Mybatis 入门之MyBatis环境搭建(第一篇)

    Mybatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。这篇文章主要介绍了Mybatis入门第一篇之MyBaits环境搭建,需要的朋友参考下
    2016-12-12

最新评论