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
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、转化方式3LocalDateTime localDateTime = date.toInstant().atOffset(ZoneOffset.ofHours(8)).toLocalDateTime(); //输出信息:2023-06-05T22:12:02.954 System.out.println("===localDateTime==="+localDateTime);
4、LocalDateTime转Date
//LocalDateTime转Date LocalDateTime localDateTime= LocalDateTime.now(); //输出:2023-06-01T15:32:30.766 System.out.println("====localDateTime===="+localDateTime); //1、转化方式1Date date1 = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); //得到时间戳:1685604750766 System.out.println(date1.getTime()); //2、转化方式2Date date = Date.from(localDateTime.toInstant(ZoneOffset.ofHours(8))); //输出信息:Mon Jun 05 22:15:20 CST 2023System.out.println("==date==="+date);
5、LocalDateTime转String
//LocalDateTime转字符串String time1= LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // ==== time1====2023-06-01 15:23:34System.out.println("====time1===="+ time1);
6、String转LocalDateTime
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:34System.out.println("===localDateTime ===="+ localDateTime);
7、毫秒/时间戳转LocalDateTime
//测试时间点:2023-04-25T00:42:59.089LocalDateTime now = LocalDateTime.now();//1、获取毫秒单位long seconds = Instant.now().getEpochSecond(); //输出:1682354579//2、获取时间戳long milliSeconds = Instant.now().toEpochMilli();//输出:1682354579089//3、毫秒转LocalDateTimeLocalDateTime dateTimeFromSecond = LocalDateTime.ofInstant( Instant.ofEpochSecond(seconds), ZoneOffset.ofHours(8));//4、时间戳转LocalDateTimeLocalDateTime dateTimeFromMilliSecond = LocalDateTime.ofInstant(Instant.ofEpochMilli(milliSeconds), ZoneOffset.ofHours(8));
来源地址:https://blog.csdn.net/tangshiyilang/article/details/131178745
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341