鄂尔多斯网站制作,农产品品牌建设,全景网互动平台,个人网站搭建步骤一、前言 大家在开发过程中必不可少得和日期打交道#xff0c;对接别的系统时#xff0c;时间日期格式不一致#xff0c;每次都要转换! 从 Java1 到 Java8 将近 20 年#xff0c;再加上 Java8 的普及时间、各种历史 API 兼容过渡时间。我们很多时候需要在旧时间 API 与新时…一、前言 大家在开发过程中必不可少得和日期打交道对接别的系统时时间日期格式不一致每次都要转换! 从 Java1 到 Java8 将近 20 年再加上 Java8 的普及时间、各种历史 API 兼容过渡时间。我们很多时候需要在旧时间 API 与新时间 API 之间切换并行使用 每次写完就忘记了小编专门来整理一篇来详细说一下他们转换的方法方便后面使用 二、日期格式转换
LocalDateTime 和 Date 互相转换
Date 转 LocalDateTime
Java8 发行的时候也考虑到了新旧 API 之间的转换所以在java.util.Date中增加了toInstance()方法可以得到一个Instance实例。Instance没有时区概念所以我们需要通过atZone()指定时区得到ZonedDateTime实例然后转换为java.time.LocalDate。
如下
Date dateNow new Date();
LocalDateTime localDateTime dateNow.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime()同样的我们也可以借助Instance的ofEpochMilli()方法创建实例。如下
Date dateNow new Date();
LocalDateTime localDateTime Instant.ofEpochMilli(dateNow.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime()
}Date转LocalDate、LocalTime的原理同上。 java.util.Date是包含年月日时分秒的转为java.time.LocalDateTime是精度保留转为java.time.LocalDate是把时分秒去掉转换方式完全一样只不过要用到的是toLocalDate()方法和toLocalTime()方法。
LocalDateTime 转 Date
同理可得LocalDate、LocalTime转Date的方法。
LocalDateTime localDateTime LocalDateTime.now()
Date date Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());LocalDateTime 和 String 互相转换
LocalDateTime 转 String
LocalDate类有一个format()方法可以将日期转成字符串。format()方法需要一个DateTimeFormatter对象作为参数。
DateTimeFormatter dateTimeFormatter DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss);
String dateTimeStr LocalDateTime.now().format(dateTimeFormatter);String 转 LocalDateTime
我们可以使用parse()方法从字符串中解析日期对象
String dateTimeStr LocalDateTime.now().format(DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss));
LocalDateTime localDateTime LocalDateTime.parse(dateTimeStr);LocalDateTime 和 Instant 互相转换
LocalDateTime表示没有时区的日期时间如2019-10-25T12:15:30而Instant是时间线上的一个瞬时点。
LocalDateTime 转 Instant
LocalDateTime localDateTime LocalDateTime.now();Instant instant;
//第一种方式Using LocalDateTime.toInstant()
instant localDateTime.toInstant(ZoneOffset.UTC);//第二种方式Using LocalDateTime.atZone() and Instant.atZone()
instant localDateTime.atZone(ZoneId.systemDefault()).toInstant();//第三种方式Using LocalDateTime.toEpochSecond() and Instant.ofEpochSecond()
long timeInSeconds localDateTime.toEpochSecond(ZoneOffset.UTC);
instant Instant.ofEpochSecond(timeInSeconds);Instant 转 LocalDateTime
//Using LocalDateTime.ofInstant
LocalDateTime localDateTime LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault());long timeInSeconds 1567109422L;
localDateTime LocalDateTime.ofInstant(Instant.ofEpochSecond(timeInSeconds), ZoneId.systemDefault());localDateTime LocalDateTime.ofInstant(Instant.ofEpochSecond(timeInSeconds, 0), ZoneId.systemDefault());long timeInMillis 1567109422123L;
localDateTime LocalDateTime.ofInstant(Instant.ofEpochMilli(timeInMillis), ZoneId.systemDefault());//Using Timestamp
localDateTime Timestamp.from(Instant.now()).toLocalDateTime(); Date 和 String 互相转换
Date 转 String
DateFormat df new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);
Date now new Date();
String dateStr df.format(now);String 转 Date
DateFormat df new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);
Date now new Date();
String dateStr df.format(now);
Date date df.parse(dateStr);