LocalDateTime、LocalDate、Date的相互转换

2023-12-19

使用背景

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的相互转换 的相关文章

随机推荐

  • 【分布式算法】Gossip协议详解

    一 为什么需要 Gossip 协议 为了实现 BASE 理论中的 最终一致性原则 两阶段提交协议和 Raft 算法需要满足 大多数服务节点正常运行 原则 如果希望系统在少数服务节点正常运行的情况下 仍能对外提供稳定服务 这时就需要实现最终一
  • 微信小程序基本结构

    这里写自定义目录标题 文件目录结构 创建一个页面 新建一个小程序项目 搭建目录结构 搭建项目页面 引 字体图标 搭建项 tabbar结构 标签初始化 自定义组件 声明一个自定义组件
  • 基于html5的国家历史文物网站的设计与实现-计算机毕业设计源码63653

    目 录 摘 要 Abstract 第 1 章
  • 基于Spring Boot旅游景点订票系统设计与实现-计算机毕业设计源码68524

    摘 要 科技进步的飞速发展引起人们日常生活的巨大变化 电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用 信息时代的到来已成为不可阻挡的时尚潮流 人类发展的历史正进入一个新时代 在现实运用中 应用软件的工作规则和开发步
  • springboot+mysql宠物领养系统-计算机毕业设计源码46903

    目 录 摘要 1 绪论 1 1 意义 1 2
  • Manacher算法(马拉车)

    Manacher 马拉车 算法 作用 在On的时间复杂度下 求出字符串每个回文中心的最长回文半径 回文半径 以回文中心为起点 到回文串两端的距离 如 a b a 以b为回文中心 最长回文半径就是 4 可以根据个人习惯选择是否将回文中心包括
  • 题解 | #输出某一年的各个月份的天数#

    三方寄过去了 告诉我停止24届招聘 全部毁约 牛的 he芯 毁约应届生 34316 广西北部湾银行2022年校园招聘 广西北部湾银行股份有限公司2022届校园招聘 看终端大把大把15级的 这个14级是不是终端bg的白菜了 程序员面试六战六捷
  • uniapp-微信小程序分享给好友和朋友圈功能

    分享给好友 只需要在要分享的页面中设置 onShareAppMessage 即可 只有定义了此事件处理函数 右上角菜单才会显示 转发 按钮 监听用户点击页面内转发按钮 button 组件 open type share 使用button分享
  • nodejs+vue+ElementUi公司企业商品产品订购网站vue

    运行软件 vscode 前端nodejs vue ElementUi 语言 node js 框架 Express koa 前端 Vue js 数据库 mysql 开发软件 VScode webstorm hbuiderx均可企业现在正处于信
  • java SpringCloud版本b2b2c鸿鹄云商平台全套解决方案

    使用技术 Spring Cloud Spring Boot Mybatis 微服务 服务监控 可视化运营 B2B2C平台 平台管理端 包含自营 商家平台端 多商户入驻 PC买家端 手机wap 公众号买家端 微服务 30个通用微服务如 商品
  • 一招砍成本、四档提效率,建设智能工厂成就智造企业

    环境资源约束大 成本高 利润低是制约制造业发展的核心问题 日趋激烈的市场竞争环境又要求制造企业以更优的成本 更安全 更智能的方式提供更好的品质 更实时的响应 更高的效率 更个性化的产品 进退维艰的制造企业要如何破局 答案是 建智能工厂 成为
  • SpringBoot集成Redis

    依赖
  • 在区块链中看CHAT的独特见解

    问CHAT 谈谈对区块链以及区块链金融的理解 CHAT回复 区块链是一种去中心化的分布式数据库技术 这种技术通过加密算法 使数据在网络中传输和存储的过程变得更加安全可靠 区块链的出现引领了存储 交易等形式的革命 改变了诸多行业的运作模式 首
  • Python3 数据类型转换

    在Python3中 可以使用内置的函数来进行数据类型转换 以下是一些常用的数据类型转换函数 整数转换 int x 将x转换为整数 如果x是浮点数 会将其截断为整数 int x base 将x按照指定的进制base转换为整数 http www
  • 【手势识别】交警手势类型识别【含Matlab源码 3267期】

    博主简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 Matlab项目合作可私信 个人主页 海神之光 代码获取方式 海神之光Matlab王者学习之路 代码获取方式 座右铭 行百里者 半于九十 更多Matlab仿真内容点击 Matl
  • Python 循环语句的使用

    Python提供了多种循环语句 用于重复执行一段代码 以下是Python中常用的循环语句 for循环 for循环用于遍历一个可迭代对象 如列表 字符串 元组等 中的元素 执行指定的代码块 http www jshk com cn mb re
  • 云服务器和大宽服务器特点及应用场景

    大宽服务器和云服务器是两种不同类型的服务器 各有其特点和应用场景 首先 大宽服务器如其名所示 主要特点是具有较大的带宽 带宽越大 每秒可下载的数据量就越大 允许同时访问的客户数量也越多 因此 大宽服务器特别适合需要大量数据传输和高并发访问的
  • 【印刷数字识别】OCR识别系统【含Matlab源码 438期】

    博主简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 Matlab项目合作可私信 个人主页 海神之光 代码获取方式 海神之光Matlab王者学习之路 代码获取方式 座右铭 行百里者 半于九十 更多Matlab仿真内容点击 Matl
  • 【手写数字识别】BP神经网络手写数字识别【含GUI Matlab源码 868期】

    博主简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 Matlab项目合作可私信 个人主页 海神之光 代码获取方式 海神之光Matlab王者学习之路 代码获取方式 座右铭 行百里者 半于九十 更多Matlab仿真内容点击 Matl
  • LocalDateTime、LocalDate、Date的相互转换

    使用背景 LocalDateTime 及 LocalDate 是 Java8 的新特性 有时为了兼容 Date 类型需要进行转换 今天的项目就有一个需求是实现一个函数 能够计算出当天在一年中的第多少天 通过搜索找到java8有LocalDa