Java 8 中 Date与LocalDateTimeLocalDateLocalTime互转
Posted 丨逸仙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 8 中 Date与LocalDateTimeLocalDateLocalTime互转相关的知识,希望对你有一定的参考价值。
Java 8中 java.util.Date 类新增了两个方法,分别是from(Instant instant)和toInstant()方法 // Obtains an instance of Date from an Instant object. public static Date from(Instant instant) { try { return new Date(instant.toEpochMilli()); } catch (ArithmeticException ex) { throw new IllegalArgumentException(ex); } } // Converts this Date object to an Instant. public Instant toInstant() { return Instant.ofEpochMilli(getTime()); } 这两个方法使我们可以方便的实现将旧的日期类转换为新的日期类,具体思路都是通过Instant当中介,然后通过Instant来创建LocalDateTime(这个类可以很容易获取LocalDate和LocalTime),新的日期类转旧的也是如此,将新的先转成LocalDateTime,然后获取Instant,接着转成Date,具体实现细节如下: // 01. java.util.Date --> java.time.LocalDateTime public void UDateToLocalDateTime() { java.util.Date date = new java.util.Date(); Instant instant = date.toInstant(); ZoneId zone = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); } // 02. java.util.Date --> java.time.LocalDate public void UDateToLocalDate() { java.util.Date date = new java.util.Date(); Instant instant = date.toInstant(); ZoneId zone = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); LocalDate localDate = localDateTime.toLocalDate(); } // 03. java.util.Date --> java.time.LocalTime public void UDateToLocalTime() { java.util.Date date = new java.util.Date(); Instant instant = date.toInstant(); ZoneId zone = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); LocalTime localTime = localDateTime.toLocalTime(); } // 04. java.time.LocalDateTime --> java.util.Date public void LocalDateTimeToUdate() { LocalDateTime localDateTime = LocalDateTime.now(); ZoneId zone = ZoneId.systemDefault(); Instant instant = localDateTime.atZone(zone).toInstant(); java.util.Date date = Date.from(instant); } // 05. java.time.LocalDate --> java.util.Date public void LocalDateToUdate() { LocalDate localDate = LocalDate.now(); ZoneId zone = ZoneId.systemDefault(); Instant instant = localDate.atStartOfDay().atZone(zone).toInstant(); java.util.Date date = Date.from(instant); } // 06. java.time.LocalTime --> java.util.Date public void LocalTimeToUdate() { LocalTime localTime = LocalTime.now(); LocalDate localDate = LocalDate.now(); LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime); ZoneId zone = ZoneId.systemDefault(); Instant instant = localDateTime.atZone(zone).toInstant(); java.util.Date date = Date.from(instant); }
以上是关于Java 8 中 Date与LocalDateTimeLocalDateLocalTime互转的主要内容,如果未能解决你的问题,请参考以下文章
打扰下,输出java.util.Date()时间与电脑实际时间相差8小时,Myeclipse.百度说:
Java 8+ 中的 DateTimeFormatter.ISO_LOCAL_DATE 与 DateTimeFormatter.ofPattern("yyyy-MM-dd")