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

146 阅读1分钟

LocalDateTime是在java8语言中引入的,作为日期和时间API增强的一部分。它表示日期和时间,不包含2018-09-06T06:12:40的时区信息,它是不可改变的对象,一旦创建,将不会被修改,它用于存储日期,如生日和假期的时间信息。本地日期只包含年、月、日、时、分、秒的纳米精度。

语法

该类实现了LocalDateChronoLocalDateTime

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

例子

我们将通过使用实例来了解如何使用LocalDateTime

如何获得当前日期和时间

now()方法使用默认的系统时区返回日期和时间。

LocalDateTime currentDateTime = LocalDateTime.now();  
System.out.println(currentDateTime); //2018-09-06T21:52:49.714773400  

它有一个静态的of()方法,需要java.time.LocalDatejava.time.LocalTime来创建LocalDateTime对象。下面是一个方法使用的例子。

LocalDateTime currentDateTime  = LocalDateTime.of(LocalDate.now(), LocalTime.now());  
System.out.println(currentDateTime);  

localdatetime .parse方法接受字符串对象和DateTimeFormatter实例。用模式创建的Datetimeformatter对象。

String string = "2018-12-12 12:30";  
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");  
LocalDateTime localDateTime = LocalDateTime.parse(string, dateTimeFormatter);  
System.out.println(localDateTime); //2018-12-12T12:30  

日期是传统的Date类和java8版本中引入的LocalDateTime。

LocalDateTime localDateTime =LocalDateTime.now();  
Date date = java.sql.Timestamp.valueOf( localDateTime );  
System.out.println(date);  

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

Instant instant = Instant.now();  
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());  
System.out.println(localDateTime);  

System.currentTimeMillis()返回当前Epcoh毫秒。使用Instant.ofEpochMilli()方法创建Instant,将Instant转换为LocalDateTime。

LocalDateTime localDateTime =  
LocalDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()), TimeZone  
.getDefault().toZoneId());    
System.out.println(localDateTime);