您的位置:首页 > 编程语言 > Java开发

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

2016-11-25 17:29 501 查看
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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: