Java8- 通过实例学习LocalDateTime基础知识

572 阅读2分钟

LocalDateTime 是在java8语言中引入的,作为日期和时间API增强的一部分。

它表示Datetime ,没有timezone 信息。示例LocalDateTime对象显示为2022-12-14T06:12:40。

它是一个immutable 对象,这意味着一旦该对象被创建,将不会被修改。

它被用来存储日期,如生日和假期的时间信息。

LocalDate 它只包含年、月、日、时、分、秒的纳米级精度。

下面是LocalDateTime的语法和签名

该类实现了LocalDate 接口的ChronoLocalDateTime

public final class LocalDateTime  
        implements Temporal, TemporalAdjuster, ChronoLocalDateTime, Serializable 

让我们来看看LocalDateTime类的例子。

如何在java中获得当前日期和时间?

在java中,我们有多种方法可以获得当前的日期和时间。

  • 使用now()方法 now() 方法返回使用默认系统时区的日期和时间。
import java.time.LocalDateTime;

public class LocalDateTimeExample {
    public static void main(String[] args) {
        LocalDateTime currentDateTime = LocalDateTime.now();
        System.out.println(currentDateTime); //2021-12-14T18:13:40.564
    }
}

它有一个静态的of() 方法,需要java.time.LocalDatejava.time.LocalTime来创建LocalDateTime对象

下面是一个方法使用的例子。

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class LocalDateTimeExample {
    public static void main(String[] args) {
        LocalDateTime currentDateTime  = LocalDateTime.of(LocalDate.now(), LocalTime.now());
        System.out.println(currentDateTime);
    }
}


LocalDateTimeparse 方法,接受字符串对象和DateTimeFormatter 实例。

用日期模式创建的Datetimeformatter对象。

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class OptionalClassExample {
    public static void main(String[] args) {
        String string = "2022-12-12 12:30";
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
        LocalDateTime localDateTime = LocalDateTime.parse(string, dateTimeFormatter);
        System.out.println(localDateTime); //2022-12-12 12:30
    }
}

date 是一个传统的类,LocalDateTime 在java8版本中被引入。
有时,我们需要将LocalDateTime转换为Date类。

下面是一个例子

import java.time.LocalDateTime;
import java.util.Date;

public class OptionalClassExample {
    public static void main(String[] args) {
        LocalDateTime localDateTime =LocalDateTime.now();
        Date date = java.sql.Timestamp.valueOf( localDateTime );
        System.out.println(date);
    }
}

它提供了ofInstant() 方法,该方法接收即时对象和区域ID - 系统默认的区域IDLocalDateTime.toInstant() 方法用于将LocalDateTime转换为即时。

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;

public class OptionalClassExample {
    public static void main(String[] args) {
        Instant instant = Instant.now();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
        System.out.println(localDateTime);
    }
}

System.currentTimeMillis() 返回当前的Epcoh milliseconds。使用 Instant.ofEpochMilli()方法创建 Instant,将Instant 转换为 LocalDate时间。

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.TimeZone;

public class OptionalClassExample {
    public static void main(String[] args) {
        LocalDateTime localDateTime =
                LocalDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()), TimeZone
                        .getDefault().toZoneId());
        System.out.println(localDateTime);
    }
}

总结

本教程是关于LocalDateTime的教程,并附有实例