LocalDateTime、LocalDate、Date的相互转换

2023-10-29

目录

使用背景

 转换方法

LocalDateTime 转 LocalDate

LocalDate 转 LocalDateTime

LocalDate 转 Date

Date转LocalDate 

LocalDateTime转Date

Date 转 LocalDateTime

现在LocalDateTime、LocalDate、Date之间的相互转换就完成了


使用背景

LocalDateTime 及 LocalDate 是 Java8 的新特性,有时为了兼容 Date 类型需要进行转换。

今天的项目就有一个需求是实现一个函数 能够计算出当天在一年中的第多少天,通过搜索找到java8有LocalDateTime类就能够实现这个需求。但是需要进行时间类型的转换工作。

这里把LocalDateTime LocalDate和Date之间的转换进行了整理,方便大家使用。

        LocalDateTime now = LocalDateTime.now();
        int dayOfYear = now.getDayOfYear();
        System.out.println(dayOfYear);

 转换方法

LocalDateTime 转 LocalDate

LocalDateTime localDateTime = LocalDateTime.now();
LocalDate localDate = localDateTime.toLocalDate();

LocalDate 转 LocalDateTime

一般调用 atTime() 方法进行赋值

LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime1 = localDate.atStartOfDay();
LocalDateTime localDateTime2 = localDate.atTime(8,20,33);
LocalDateTime localDateTime3 = localDate.atTime(LocalTime.now());

LocalDate 转 Date

先调用 atStartOfDay() 方法转 LocalDateTime 再转 Date

LocalDate localDate = LocalDate.now();
ZoneId zoneId = ZoneId.systemDefault();
Date date = Date.from(localDate.atStartOfDay().atZone(zoneId).toInstant());

Date转LocalDate 

Date date = new Date();
ZoneId zoneId = ZoneId.systemDefault();
LocalDate localDate = date.toInstant().atZone(zoneId).toLocalDate();

LocalDateTime转Date

在LocalDateTime 转 Date 时,需要使用到 Java 8的几个类

  • ZoneId/ZoneOffset:表示时区
  • ZonedDateTime: 表示特定时区的日期和时间
  • Instant:表示时刻,不直接对应年月日信息,需要通过时区转换
//d当前时间
LocalDateTime localDateTime = LocalDateTime.now();
//系统的默认时区
ZoneId zoneId = ZoneId.systemDefault();
//时区的日期和时间
ZonedDateTime zonedDateTime = localDateTime.atZone(zoneId);
//获取时刻
Date date = Date.from(zonedDateTime.toInstant());
System.out.println("格式化前:localDateTime:" + localDateTime + "  Date:" + date);
//格式化LocalDateTime、Date
DateTimeFormatter localDateTimeFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("格式化后:localDateTime:" + localDateTimeFormat.format(localDateTime) + "  Date:" + dateFormat.format(date));

输出结果如下:

格式化前:localDateTime:2022-10-27T11:35:09.969  Date:Tue Oct 27 11:35:09 CST 2022
格式化后:localDateTime:2022-10-27 11:35:09  Date:2022-10-27 11:35:09

Date 转 LocalDateTime

先转 ZonedDateTime 再转 LocalDateTime

Date date = new Date();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = date.toInstant().atZone(zoneId).toLocalDateTime();

现在LocalDateTime、LocalDate、Date之间的相互转换就完成了

 

如果觉得本文对你有帮助,欢迎点赞,欢迎关注我,如果有补充欢迎评论交流,我将努力创作更多更好的文章。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LocalDateTime、LocalDate、Date的相互转换 的相关文章

随机推荐

  • 20.内部类【Java温故系列】

    参考自 Java核心技术卷1 内部类 1 使用内部类访问对象状态 2 内部类的特殊语法规则 3 局部内部类 4 匿名内部类 5 静态内部类 内部类 inner class 是定义在另一个类中的类 使用内部类的原因如下 内部类方法可以访问该类
  • 基于Sekiro的jsRPC的使用和安装

    什么是jsRPC 说实话在介绍 JSRPC 我向大家推荐一个库 Selenium wire 感觉和JSrpc的原理很像 RPC指远程过程调用 APP里面的RPC大家比较熟悉了 那什么是jsRPC 顾名思义 就是指利用js手段实现代码远程控制
  • Java学习笔记36——多线程03

    生产者与消费者问题 生产者消费者 生产者和消费者模式概述 生产者消费者案例 生产者消费者 生产者消费者模式是一个十分经典的多线程协作的模式 弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻 生产者线程用于生产数据 消费者线程用于消费
  • node中使用jsonwebtoken实现身份认证

    在现代web应用中 用户身份认证是非常重要且必不可少的一环 而使用Node js和Express框架 可以方便地实现用户身份认证 而在这个过程中 jsonwebtoken这个基于JWT协议的模块可以帮助我们实现安全且可靠的身份认证机制 可以
  • zabbix语言无法选择中文--zabbix安装配置中文

    You are not able to choose some of the languages because locales for them are not installed on the web server 1 安装wget y
  • 数据结构--二叉排序树

    目录 二叉排序树的定义 二叉排序树的查找 二叉排序树的插入 二叉排序树的构造 二叉排序树的删除 查找效率分析 回顾 二叉排序树的定义 二叉排序树的查找 查找成功的情况 查找失败的情况 二叉排序树的插入 注意 1 二叉排序树不允许出现重复的值
  • Vue3的自定义指令,项目中的运用

    目录 一 什么是自定义指令 1 定义 2 什么时候使用自定义指定 二 Vue3中的自定义指令 1 全局自定义指令 2 组件自定义指令 三 指令钩子 1 钩子 2 钩子参数 四 自定义指令的常见用法 1 添加事件监听 2 操作DOM 一 什么
  • 信息熵与信息增益

    信息熵 information entropy 是度量样本集合纯度 不确定度最常用的指标之一 但要注意 信息熵越小 表示不确定度越低 确定度越高 纯度越高 E n t D
  • element-ui 动态表单实现一行两列

    借鉴element ui的文档 再用el row与el col相结合实现表单一行两列功能 下面是代码
  • 分布式配置管理系统QConf

    分布式配置管理系统QConf 分布式配置管理系统QConf是360公司开源的系统 详见 https github com Qihoo360 QConf 整体架构图如下 资料 1 https github com Qihoo360 QConf
  • 第4章_瑞萨MCU零基础入门系列教程之瑞萨 MCU 源码设计规范

    本教程基于韦东山百问网出的 DShanMCU RA6M5开发板 进行编写 需要的同学可以在这里获取 https item taobao com item htm id 728461040949 配套资料获取 https renesas do
  • 【git】用好 stash,工作超nice

    一 介绍 如果修改后的内容还不想commit 就可以用git stash命令 它会将工作区和暂存区中的修改 也就是还没commit的内容 都会被保存到堆栈里 并在之后恢复到任意指定的分支上 二 应用场景 1 在分支a进行开发feature
  • python统计秒数

    code 1 没有cuda的版本 import time s time time for i in range 100 pass t time time print time sec format t s 2 cuda 同步 torch c
  • DC/DC电路——自举电容(boost)的作用

    DCDC电路中 偶尔存在有自举电容的情况 手册对该电容的定义如下 假如该点的电压低于MOSFET的最小开启电压 MOSFET将保持关断状态 看芯片手册的内部结构 此芯片的MOSFET为N沟道的MOSFET N沟道的MOSFET开通电压VGS
  • 第36.4节 动画-路径动画中的角度控制问题

    目录 本节功能 关键点 所有代码 本节功能 本节创建了一个高高低低的三维的路径 在楼顶和地面之间穿梭 一个飞机沿着这个路径进行飞行 如下图所示 请使用浏览器打开 平时遇到问题或加群也可以加我微信 13324598743 击此打开网盘资源链接
  • 使用jiraRestClient报错java.lang.ClassNotFoundException: com.google.common.base.MoreObjects

    问题是swagger需要guava依赖 导入依赖解决
  • 【工欲善其事必先利其器】论文编辑及文献管理(Endnote,Latex,JabRef ,overleaf)资源下载及使用指南

    EndnoteX9 百度网盘下载及安装 Download 百度网盘 链接 https pan baidu com s 1 WWYVkwF0uAUVvv73XZM6Q 提取码 mnd9 参考链接 EndNote X9 3 3 Build 13
  • 字节跳动面试题 —— 水壶问题

    原题 给你一个装满水的 8 升满壶和两个分别是 5 升 3 升的空壶 请想个优雅的办法 使得其中一个水壶恰好装 4 升水 每一步的操作只能是倒空或倒满 图片 理解了这个题目的意思之后 我们的第一个方法肯定就是使用强大的脑力来进行暴力破解法
  • 关于常量指针的用法

    一 指向常量的指针 例1 int main int num 5 const int fun 100 int pi const int pci pi num pci fun printf num addr p value d n num nu
  • LocalDateTime、LocalDate、Date的相互转换

    目录 使用背景 转换方法 LocalDateTime 转 LocalDate LocalDate 转 LocalDateTime LocalDate 转 Date Date转LocalDate LocalDateTime转Date Date