Java 8 中 Date与LocalDateTime、LocalDate、LocalTime互转

来源:互联网 发布:蚂蚁聚宝网络异常 编辑:程序博客网 时间:2024/05/29 07:11

最近一直在用Java8提供的LocalDateTime,使用起来确实比Date方便多了,但是也会需要他们之间的转换的,查到的备份一下,提供出来方便大家


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.LocalDateTimepublic 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.LocalDatepublic 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.LocalTimepublic 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.Datepublic 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.Datepublic 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.Datepublic 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);}



转载地址:原地址



阅读全文
1 0