Java LocalDateTime

时间:2020-02-23 14:36:41  来源:igfitidea点击:

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没有时区信息,因此我们需要提供时区以进行偏移并转换为本地时区。