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的相互转换操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java8时间转换(LocalDateTime)代码实例

    这篇文章主要介绍了java8时间转换(LocalDateTime)代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.将LocalDateTime转为自定义的时间格式的字符串 public static String getDateTimeAsString(LocalDateTime localDateTime, String format) { DateTimeFormatter formatter = DateTimeFormatt

  • java_时间戳与Date_相互转化的实现代码

    1.时间戳的定义 时间戳是指文件属性里的创建.修改.访问时间. 数字时间戳技术是数字签名技术一种变种的应用.在电子商务交易文件中,时间是十分重要的信息.在书面合同中,文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容.数字时间戳服务(DTS:digital time stamp service)是网上电子商务安全服务项目之一,能提供电子文件的日期和时间信息的安全保护. 时间戳(time-stamp)是一个经加密后形成的凭证文档,它包括三个部分: 需加时间戳的文件的摘要(dig

  • Java8中的LocalDateTime和Date一些时间操作方法

    先记录下jdk8之前的一些帮助方法 判断time是否在now的n天之内 /** * 判断time是否在now的n天之内 * @param time * @param now * @param n 正数表示在条件时间n天之后,负数表示在条件时间n天之前 * @return */ public static boolean belongDate(Date time, Date now, int n) { SimpleDateFormat sdf = new SimpleDateFormat("yyy

  • java8 Instant 时间及转换操作

    一.获取当前时区时间: Instant.now().atZone(ZoneId.systemDefault()) 二.创建Instant实例 Instant now = Instant.now(); System.out.println("now:"+now); 控制台输出: now:2018-07-09T08:59:08.853Z 注意:通过这种方式获取的时间戳与北京时间相差8个时区,需要修正为北京时间,通过查看源代码发现Instant.now()使用等是UTC时间Clock.sys

  • 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 { pub

  • JAVA String转化成java.sql.date和java.sql.time方法示例

    前言 众所周知在Java中String 转 java.sql.date 是不可以直接实现的,需要先转成 java.util.date 然后再转成 java.sql.date.关于java.util.Date与java.sql.Date的区别可以点击这篇文章查看详情. 方法示例代码如下 String -> java.sql.date    输入 2016-11-11 /** * @param 返回java.sql.Date格式的 * */ public java.sql.Date strToDat

  • java.util.Date与java.sql.Date的区别

    我数据库里用到了日期类型.用java编程的时候同时import了java.util.*和java.sql.*,发现直接申明Date类型 Date dt; 会报错,查了一下才发现有java.util.Date和java.sql.Date,在定义日期类型的时候要使用全名,就是像这样: java.util.Date udt; java.sql.Date sdt; 然后我就查java.util.Date和java.sql.Date的区别和用法,这方面网上资料挺全,我就不赘述了,大致区别就是java.ut

  • Java java.sql.Timestamp时间戳案例详解

    java.sql.Timestamp(时间戳) 继承父类:java.util.Date 所有已实现的接口:Serializable, Cloneable, Comparable<Date>  主要构造方法:Timestamp(long millis) 使用毫秒时间值构造 Timestamp 对象. Timestamp允许 JDBC API 将该类标识为 SQL TIMESTAMP 值.它通过允许小数秒到纳秒级精度的规范来添加保存 SQLTIMESTAMP 小数秒值的能力. Timestamp

  • java8中新的Date和Time详解

    新Date类和Time类背后的设计原则: 不可变类 java8之前,Date类都是可变类.当我们在多线程环境下使用它,编程人员应该确认Date对象的线程安全.Java8的Date和Time API提供了线程安全的不可变类.编程人员不用考虑并发的问题. 领域模型驱动设计方法 新的日期和时间的类别遵循"域驱动设计".对于开发者来说,理解方法和类的功能是很容易的. 接下来让我们来看看新Date和Time API: 1.java.time.LocalDate: LocalDate只提供日期不提

  • 关于Java中BeanMap进行对象与Map的相互转换问题

    javabean与map的转换有很多种方式,比如: 1.通过ObjectMapper先将bean转换为json,再将json转换为map,但是这种方法比较绕,且效率很低,经测试,循环转换10000个bean,就需要12秒!!!不推荐使用 2.通过Java反射,获取bean类的属性和值,再转换到map对应的键值对中,这种方法次之,但稍微有点麻烦 3.通过net.sf.cglib.beans.BeanMap类中的方法,这种方式效率极高,它跟第二种方式的区别就是因为使用了缓存,初次创建bean时需要初

  • Java日期工具类操作字符串Date和LocalDate互转

    目录 字符串转Date Date转字符串 字符串转LocalDate Date转LocalDate LocalDate转字符串 两个日期的时间差 一天的开始和结束时间 工具类 前言: 避免重复造轮子,相关方法基于hutool日期时间工具封装并做部分增强.需要先引入如下坐标 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <versio

  • Java8中LocalDateTime与时间戳timestamp的互相转换

    Java8 LocalDateTime与timestamp转换 将timestamp转为LocalDateTime public LocalDateTime timestamToDatetime(long timestamp){ Instant instant = Instant.ofEpochMilli(timestamp); return LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); } 将LocalDataTime转为t

  • Java8中Optional类的使用说明

    目录 简介 历史 null带来的种种问题 方案 场景引入 方法说明 构造函数 创建Optional对象 使用map从Optional对象中提取和转换值 使用flatMap链接Optional对象 默认行为及解引用Optional对象1 默认行为及解引用Optional对象2 使用filter剔除特定的值 实战 总结 简介 optional类是java8中引入的针对NPE问题的一种优美处理方式,源码作者也希望以此替代null. 历史 1965年,英国一位名为Tony Hoare的计算机科学家在设计

随机推荐