在阿里巴巴Java开发手册中写到:
1、String转为Instant、LocalDate、LocalDateTime
//使用Java8新特性
//String -> Instant
Instant instant = LocalDate.parse(time,DateTimeFormatter.ofPattern("yyyy-MM-dd")).atStartOfDay(ZoneId.systemDefault()).toInstant();
//String -> LocalDate
LocalDate localDate = LocalDate.parse("2019-12-27",DateTimeFormatter.ISO_DATE);
//String -> LocalDateTime 第一种方式
LocalDateTime localDateTime1 = LocalDate.parse("2019-12-27",DateTimeFormatter.ISO_DATE).atStartOfDay();
//String -> LocalDateTime 第二种方式
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd[['T'HH][:mm][:ss]]")
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.parseDefaulting(ChronoField.MILLI_OF_SECOND, 0)
.toFormatter();
LocalDateTime localDateTime2 = LocalDateTime.parse("2019-12-27", formatter);
2、 Long转为LocalDateTime 、String
//Long -> LocalDateTime
LocalDateTime times_s = LocalDateTime.ofInstant(Instant.ofEpochMilli(传入Long型参数), ZoneId.systemDefault());
//Long -> String
String strTime = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss").format(times_s);
3、 Date转为Instant、LocalDateTime
//Date -> Instant
Instant instant = new Date().toInstant();
//Date -> LocalDateTime
LocalDateTime localDateTime = LocalDateTime.ofInstant(new Date().toInstant(),ZoneId.systemDefault());
4、LocalDateTime转为String
//LocalDateTime -> String
String time = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());