Java LocalDateTime
Java LocalDateTime类是Java 8 Date API的一部分。
Java LocalDateTime
Java LocalDateTime是一个不可变的类,因此它是线程安全的,适合在多线程环境中使用。
LocalDateTime以YYYY-MM-DD-hh-mm-ss.zzz格式提供日期和时间输出,可扩展到纳秒精度。
因此我们可以将" 2016-11-10 21:30:45.123456789"存储在LocalDateTime对象中。就像LocalDate类一样,LocalDateTime也没有时区数据。
我们可以将LocalDateTime实例用于通用日期和时间信息。LocalDateTime类实现Comparable,ChronoLocalDateTime,Temporal,TemporalAdjuster,TermporalAccessor和Serializable接口。
LocalDateTime是最后一堂课,因此我们无法对其进行扩展。
LocalDateTime是一个基于值的类,因此我们应该使用equals()方法检查LocalDateTime的两个实例是否相等。
LocalDateTime类是LocalDate和LocalTime的协同"组合",其格式受污染,如上图所示。
导入Java LocalDateTime类
Java LocalDateTime类是java.time包的一部分。
因此我们可以像下面这样导入它:
import java.time.LocalDateTime;
创建LocalDateTime实例
有以下几种创建LocalDateTime对象的方法。
调用static now()方法,该方法从默认时区的系统时钟返回当前日期时间。
通过将年,月,日,小时,分钟,秒和纳秒值传递给" of()"方法。
此方法已重载,其中一个在LocalDate和LocalTime接受参数。使用parse()方法并传递日期时间字符串表示形式。
通过传递即时和ZoneId信息来使用
ofInstant()
。
从LocalDateTime实例检索日期时间信息
让我们看一下一些LocalDateTime方法来检索日期时间信息。
getHour():返回LocalDateTime对象中包含的int小时,从0到23。
getMinute():返回整数分钟信息,从0到59。
getSecond():返回LocalDateTime对象中包含的int秒,从0到59。
getNano():从LocalDateTime对象返回int纳秒,范围从0到999,999,999。
除上述之外,LocaDate类的常用方法(例如getYear(),getMonth(),getDayOfMonth(),getDayOfWeek(),getDayOfYear())也适用于LocalDateTime类。
让我们通过一个例子来看看这些方法。
Java LocalDateTime示例
LocalDateTime ldt = LocalDateTime.now();
Java LocalDateTime方法–加号和减号
LocalDateTime类具有许多用于加减日期时间的方法。
请注意,它会返回具有更改的LocalDateTime对象的副本,在指定的对象中不会发生更改。
其中一些方法是:
plusHours(),plusMinutes(),plusSeconds()和plusNanos()用于在LocalDateTime对象中添加时间分量。
minusHours(),minusMinutes(),minusSeconds()和minusNanos()用于减去LocalDateTime对象中的时间分量。
plusYears(),plusMonths(),plusWeeks()和plusDays()用于在LocalDateTime对象中添加日期组件。
minusYears(),minusMonths(),minusWeeks()和minusDays()用于减去LocalDateTime对象中的日期分量。
以上所有方法都经过长时间的争论,它们的名称清楚地表明了它们的用途。
这是LocalDateTime的加号和减号方法的示例。
LocalDateTime ldt = LocalDateTime.of(2016,11,6,6,30,40,50000); ldt = LocalDateTime.of(LocalDate.now(), LocalTime.now());
上面程序的输出是:
LocalDateTime ldt = LocalDateTime.parse("2016-11-10T22:11:03.460446");
如您所见,如果第二个和nano的值为0,则在调用LocalDateTime toString()方法时不会返回该值。
Java LocalDateTime至今
我们应该避免使用传统的java.util.Date
类,但是如果需要的话,我们可以使用以下代码将LocalDateTime转换为Date。
LocalDateTime ldt = LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault());
请注意,上面的输出是因为LocalDateTime没有时区信息,因此我们需要提供时区以进行偏移并转换为本地时区。