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

作者:insping 时间:2022-01-05 20:01:28 

一、简述

首先,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

来源:https://blog.csdn.net/hspingcc/article/details/73332125

标签:Java8,LocalDate,java.sql.Date
0
投稿

猜你喜欢

  • Android中打电话的数据流程分析

    2022-07-11 17:00:15
  • 解决SpringBoot运行Test时报错:SpringBoot Unable to find

    2021-11-15 16:48:56
  • Java lombok中@Accessors注解三个属性的作用

    2022-04-20 14:32:27
  • 使用maven命令安装jar包到本地仓库的方法步骤

    2022-10-19 21:57:58
  • IntelliJ IDEA 15款超级牛逼插件推荐(自用,超级牛逼)

    2023-10-10 05:51:22
  • Java生成动态版验证码的方法实例

    2023-08-26 03:53:08
  • Java SE求解汉诺塔问题的示例代码

    2022-05-10 23:44:30
  • java获取redis日志信息与动态监控信息的方法

    2021-11-19 06:24:55
  • C# 解决datagridview控件显示大量数据拖拉卡顿问题

    2022-03-21 12:52:24
  • Android recyclerview实现拖拽排序和侧滑删除

    2021-10-04 00:33:16
  • C# listview 点击列头排序的实例

    2023-11-26 20:09:05
  • Java泛型定义与用法实例详解

    2023-11-25 11:50:28
  • Java项目导入IDEA的流程配置以及常见问题解决方法

    2021-11-21 10:02:24
  • 一篇文章带你了解Java 中序列化与反序列化

    2021-11-27 21:19:27
  • spring boot集成smart-doc自动生成接口文档详解

    2023-11-28 23:08:02
  • JAVA序列化Serializable及Externalizable区别详解

    2022-04-04 10:49:09
  • 剖析设计模式编程中C#对于组合模式的运用

    2023-04-09 07:48:17
  • Springboot上传文件时提示405问题及排坑过程

    2022-12-13 03:03:58
  • 简单聊一聊Java线程池ThreadPoolExecutor

    2021-10-23 15:56:58
  • C++实现LeetCode(9.验证回文数字)

    2023-06-21 00:20:38
  • asp之家 软件编程 m.aspxhome.com