Java中LocalDateTime/DateTime与Date相互转化(java中时间转化)

1、LocalDateTime和Date为什么需要相互转化

LocalDateTime是JDK1.8出现的新特性,解决线程不安全的问题,但是当前很多的相关插件或者使用较低版本的时候,会依旧使用Date的情况,这个时候就需要两者之间的相互转化

2、JDK.8日期和时间API概述

新增的API严格区分了时刻、本地日期、本地时间,并且,对日期和时间进行运算更加方便。

其次,新API的类型几乎全部是不变类型(和String的使用类似),可以放心使用不必担心被修改。

LocalDateTime是JDK1.8开始的新特性,主要的核心类有:

【1、时间和日期类:LocalDateTime、LocalDate、LocalTime】

详解地址:https://blog.csdn.net/tangshiyilang/article/details/131832013

【2、带时区的日期和时间:ZonedDateTime】
详解地址:https://blog.csdn.net/tangshiyilang/article/details/131058869

【3、时刻:Instant是时间线上的一个瞬时点。】
Java中Date类的toInstant()方法用于将Date对象转换为Instant对象。在转换过程中会创建一个Instant,用于表示时间轴上与此日期相同的点。

【4、时区:ZoneId,ZoneOffSet】
java.time.ZoneOffset.ofHours(int hours)方法使用以小时为单位的偏移量获取 ZoneOffset 的实例

ZoneId.systemDefault():获取时区名称 输出:Asia/Shanghai

【5、时间间隔:Period,Duration】
使用详解:https://blog.csdn.net/tangshiyilang/article/details/131178453

6、Month月份

7、Week周

8、Clock:

3、Date转LocalDateTime

java 复制代码
Date date = new Date();
        //1、转化方式1
        LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        //2023-05-30T23:44:05.890
        System.out.println(localDateTime.now());
        //2、转化方式2
        LocalDateTime localDateTime1 = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
        //2023-05-30T23:44:05.890
        System.out.println(localDateTime1.now());
//3、转化方式3
LocalDateTime localDateTime = date.toInstant().atOffset(ZoneOffset.ofHours(8)).toLocalDateTime();  
	  //输出信息:2023-06-05T22:12:02.954
	  System.out.println("===localDateTime==="+localDateTime);

4、LocalDateTime转Date

java 复制代码
 //LocalDateTime转Date
	 LocalDateTime localDateTime= LocalDateTime.now();
	 //输出:2023-06-01T15:32:30.766
	 System.out.println("====localDateTime===="+localDateTime);
      //1、转化方式1
Date date1 = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
      //得到时间戳:1685604750766
      System.out.println(date1.getTime());
      //2、转化方式2
Date date = Date.from(localDateTime.toInstant(ZoneOffset.ofHours(8)));  
	//输出信息:Mon Jun 05 22:15:20 CST 2023
	System.out.println("==date==="+date);

5、LocalDateTime转String

java 复制代码
//LocalDateTime转字符串
String time1= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));     
// ==== time1====2023-06-01 15:23:34
System.out.println("====time1===="+ time1);

6、String转LocalDateTime

java 复制代码
String  time1=" 2023-06-01 15:23:34";
LocalDateTime  localDateTime = LocalDateTime.parse(time1,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); 
//输出:2023-06-01T15:23:34
System.out.println("===localDateTime ===="+ localDateTime);

7、毫秒/时间戳转LocalDateTime

java 复制代码
//测试时间点:2023-04-25T00:42:59.089
	LocalDateTime now = LocalDateTime.now();
//1、获取毫秒单位
	long seconds = Instant.now().getEpochSecond(); //输出:1682354579
	//2、获取时间戳
	long milliSeconds = Instant.now().toEpochMilli();//输出:1682354579089
	//3、毫秒转LocalDateTime
	LocalDateTime dateTimeFromSecond = LocalDateTime.ofInstant(
		 Instant.ofEpochSecond(seconds), ZoneOffset.ofHours(8)
	);
	//4、时间戳转LocalDateTime
	LocalDateTime dateTimeFromMilliSecond = LocalDateTime.ofInstant(
		Instant.ofEpochMilli(milliSeconds), ZoneOffset.ofHours(8)
	);
相关推荐
爱读源码的大都督28 分钟前
为什么有了HTTP,还需要gPRC?
java·后端·架构
qq_49244844636 分钟前
Jmeter设置负载阶梯式压测场景(详解教程)
开发语言·python·jmeter
Lucky_Turtle1 小时前
【Java Xml】Apache Commons Digester3解析
xml·java·apache
聪明的笨猪猪1 小时前
Java Redis “缓存设计”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
FIavor.1 小时前
我发送给Apifox是http://localhost:9002/goods/getByUserName?name=张三 为什么会是500哪里错了?
java·服务器·网络协议·http
ID_180079054731 小时前
京东获取整站实时商品详情数据|商品标题|数据分析提取教程
java·开发语言
微露清风2 小时前
系统性学习C++-第五讲-内存管理
java·c++·学习
计算机毕业设计木哥2 小时前
计算机毕业设计选题推荐:基于SpringBoot和Vue的快递物流仓库管理系统【源码+文档+调试】
java·vue.js·spring boot·后端·课程设计
qiuiuiu4132 小时前
正点原子RK3568学习日志-编译第一个驱动程序helloworld
linux·c语言·开发语言·单片机
235162 小时前
【LeetCode】146. LRU 缓存
java·后端·算法·leetcode·链表·缓存·职场和发展