2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 使用LocalDate LocalTime和LocalDateTime

使用LocalDate LocalTime和LocalDateTime

时间:2022-07-01 10:01:41

相关推荐

使用LocalDate LocalTime和LocalDateTime

Java 8对日期和时间API进行了重大更改,这是在JSR 310:日期和时间API的 JDK中包括了Joda Time API 。 此JSR由Joda Time的创建者Stephen Colebourne领导。

有许多惊人的API可用于日期和时间。 在本文中,我将介绍最常用的:java.time.LocalDatejava.time.LocalTimejava.time.LocalDateTime。 这些代表独立于时区的日期和时间值。 因此,它们依靠系统时钟来捕获值。

创建一个实例

让我们来看看使用创建它们的实例的方式now()方法和工厂方法of()

jshell> LocalDate.now()$46 ==> -07-07jshell> LocalDate.of(, 3, 30)$47 ==> -03-30jshell> LocalTime.now()$48 ==> 00:32:06.883656jshell> LocalTime.of(12,43,12,33333);$49 ==> 12:43:12.000033333jshell> LocalDateTime.now()$50 ==> -07-07T00:32:30.335562400jshell> LocalDateTime.of(, 12, 30, 12,33)$51 ==> -12-30T12:33jshell> LocalDateTime.of(LocalDate.now(), LocalTime.now())$52 ==> -07-07T00:40:38.198318200

处理日期和时间

让我们看一下如何操作或修改创建的日期和时间实例:

jshell> LocalDate d = LocalDate.now()d ==> -07-07jshell> d.plusDays(12)$54 ==> -07-19jshell> dd ==> -07-07jshell> d.plusMonths(2)$56 ==> -09-07jshell> d.minusDays(5)$57 ==> -07-02jshell> d.minusWeeks(4)$58 ==> -06-09

这些plus*()minus*()方法是不可变的,并返回一个新的日期和时间实例。 在上面的示例中,我们看到了几种方法来操纵java.time.LocalDate的组件。 在类似的行上,有plus*()minus*()方法用于处理java.time.LocalTimejava.time.LocalDateTime的组件。

比较日期和时间实例

我们想知道给定的日期和时间是在另一个日期之前还是之后,在这种情况下,我们将使用isBefore()isAfter()方法,如下所示:

jshell> var d1 = LocalDate.of(, 7, 6)d1 ==> -07-06jshell> var d2 = LocalDate.of(, 7, 7)d2 ==> -07-07jshell> d1.isAfter(d2)$64 ==> falsejshell> d1.isBefore(d2)$65 ==> truejshell> var dt1 = LocalDateTime.of(, 7, 7, 12, 30)dt1 ==> -07-07T12:30jshell> var dt2 = LocalDateTime.of(, 7, 7, 14, 30)dt2 ==> -07-07T14:30jshell> dt1.isBefore(dt2)$68 ==> truejshell> dt1.isAfter(dt2)$69 ==> false

在字符串和日期对象表示之间转换

通常,我们需要将日期和时间的String表示形式转换为其相应的对象,并且还将该对象转换为String表示形式。 对于较旧的日期类java.util.Date我们使用java.text.SimpleDateFormat解析字符串为日期,反之亦然。 在新的日期时间API中,为同一任务引入了新类java.time.format.DateTimeFormatter

如果遵循在字符串和对象表示形式之间转换日期的ISO标准,由于java.time.format.DateTimeFormatter提供了预定义的ISO格式,因此图层和应用程序之间的许多集成将变得无缝。 让我们看一下实际情况:

jshell> import java.time.*jshell> LocalDateTime ldt = LocalDateTime.now()ldt ==> -09-26T22:58:32.229096300jshell> import java.time.format.*jshell> ldt.format(DateTimeFormatter.ISO_DATE)$4 ==> "-09-26"jshell> ldt.format(DateTimeFormatter.ISO_DATE_TIME)$5 ==> "-09-26T22:58:32.2290963"jshell> ldt.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)$9 ==> "-09-26T22:58:32.2290963"jshell> ldt.format(DateTimeFormatter.BASIC_ISO_DATE)$10 ==> "0926"

我们甚至可以使用自定义格式设置模式,如下所示:

jshell> ldt.format(DateTimeFormatter.ofPattern("d-M-y"));$11 ==> "26-9-"jshell> ldt.format(DateTimeFormatter.ofPattern("d-MM-y hh:mm:ss"));$12 ==> "26-09- 10:58:32"jshell> ldt.format(DateTimeFormatter.ofPattern("d/MMM/y hh:mm:ss"));$13 ==> "26/Sep/ 10:58:32"jshell> ldt.format(DateTimeFormatter.ofPattern("d-MMM-y hh:mm:ss"));$14 ==> "26-Sep- 10:58:32"jshell> ldt.format(DateTimeFormatter.ofPattern("d-MMM-y hh:mm:ss"));$15 ==> "26-Sep- 10:58:32"jshell> ldt.format(DateTimeFormatter.ofPattern("d-MMM-y HH:mm:ss"));$16 ==> "26-Sep- 22:58:32"

可以在Javadoc中的java.time.format.DateTimeFormatter找到用于创建模式的不同规则。

让我们看一下将日期和时间的有效String表示形式转换为LocalDateTime及其相关对象:

<br />jshell> LocalDate ld = LocalDate.parse("-09-26")ld ==> -09-26jshell> LocalDateTime ldt = LocalDateTime.parse("-09-26T22:24:33")ldt ==> -09-26T22:24:33

您可以看到,在上面的代码中,我们没有提供用于解析字符串的模式,而是使用了默认的ISO格式。 通过API交换日期和时间值时,此方法非常有用。

这样,我展示了一些基本的操作,您可以使用与时区无关的新日期和时间实例进行操作。 在接下来的文章中,我将写有关时区的时间,查找持续时间,时间和日期之间的时间段以及如何使用不同的日历系统。

翻译自: //10/localdate-localtime-localdatetime.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。