Java Top.

通过。开始使用Spring 5和Spring Boot 2学习春天课程:

>>查看课程

1.概述

在本教程中,我们将看看Java时钟类的java.time包裹。我们将解释什么时钟班级是我们如何使用它。

2.时钟

时钟是在Java 8中添加的,它使用可用的最佳系统时钟提供对即时时间的访问,并作为时间提供程序使用,可以有效地作为测试目的的存根。

当前日期和时间依赖于时区,并且对于全球化应用程序,需要时间提供程序来确保使用正确的时区创建日期和时间。

这个类帮助我们测试代码更改是否能在不同的时区下工作,或者(当使用一个固定的时钟时)时间不会影响代码。

时钟类是抽象的,所以我们不能创建它的实例。可以使用以下工厂方法:

  • 抵消(时钟、持续时间)- - - - - -返回指定的时钟偏移量持续时间。它的主要用例是模拟将来或过去的运行
  • systemUTC () -返回表示UTC时区的时钟
  • 固定(即时,zhoudid) -总是返回相同的结果即时。这方面的主要用例是在测试中,其中固定的时钟确保测试不依赖于当前时钟

我们将研究大部分方法时钟类。

2.1。即时()

这个方法返回一个瞬间,表示由时钟定义的当前瞬间:

Clock Clock = Clock. systemdefaultzone ();Instant Instant = clock.instant();System.out.println(即时);

会产生:

2018 - 04 - 07 - t03:59:35.555z

2.2。systemutc()

该方法返回时钟表示UTC区域内当前时刻的对象:

Clock Clock = Clock. systemutc ();system . out。println("UTC时间::" + clock.instant());

会产生:

UTC时间:: 2018-04-04T17:40:12.353Z

2.3。系统()

此静态方法返回时钟对给定时区ID标识的时区的对象:

Clock Clock = Clock.system(ZoneId.of("Asia/Calcutta"));System.out.println (clock.instant ());

会产生:

2018-04-04T18:00:31.376Z

2.4。systemDefaultZone ()

此静态方法返回a时钟表示当前瞬间的对象并使用它运行的系统的默认时区:

Clock Clock = Clock. systemdefaultzone ();system.out.println(时钟);

以上几行产生以下结果(假设我们的默认时区是“Asia/Calcutta”):

SystemClock[亚洲/加尔各答]

我们可以通过传递来实现同样的行为ZoneId.systemDefault ():

时钟时钟= Clock.System(zhoudId.Systemdefault());

2.5。米尔斯()

这个方法以毫秒为单位返回时钟的当前时刻。它是提供允许在无法接受对象创建的高性能用例中使用时钟。此方法可用于我们否则使用的地方System.currentTimeInMillis ():

Clock Clock = Clock. systemdefaultzone ();system.out.println(clock.millis());

会产生:

1523104441258

2.6。抵消()

此静态方法从添加了指定持续时间的指定基时钟中返回一个瞬间。

如果持续时间为负,则产生的时钟瞬间将比给定的基础时钟早。

使用抵消,我们可以在过去和给定的基本时钟的未来获得瞬间。如果我们通过零持续时间,那么我们将获得与给定的基础时钟相同的时钟:

Clock baseClock = Clock. systemdefaultzone ();// result clock将会晚于baseClock clock clock = clock。抵消(baseClock Duration.ofHours (72));System.out.println (clock5.instant ());// result clock将与baseClock clock = clock相同。抵消(baseClock Duration.ZERO);System.out.println (clock.instant ());// result clock将会早于baseClock clock = clock。抵消(baseClock Duration.ofHours (-72));System.out.println (clock.instant ());

会产生:

2018-04-10T13:24:07.347Z 2018-04-07T13:24:07.348Z 2018-04-04T13:24:07.348Z

2.7。蜱虫()

这个静态方法从指定的时钟中返回瞬时值四舍五入到最近的指定持续时间的发生。指定的时钟持续时间必须为正:

Clock ClockDefaultZone = Clock.SystemDefaultZone();时钟ClockTick = Clock.Tick(ClockDefaultZone,持续时间.Ofseconds(30));system.out.println(“clock默认区域:”+ clockdefaultzone.instant());system.out.println(“时钟勾号:”+ clocktick.instant());

会产生:

时钟默认Zone: 2018-04-07T16:42:05.473Z时钟tick: 2018-04-07T16:42:00Z

2.8。tickseconds()

此静态方法返回给定时区的当前即时计时,以秒为单位。这个时钟将永远有nano-of-second字段设置为零:

ZoneId = ZoneId.of("Asia/Calcutta");Clock Clock = Clock. tickseconds (zoneId);System.out.println (clock.instant ());

会产生:

2018 - 04 - 07 - t17:40:23z

通过使用可以实现相同的相同蜱虫():

Clock Clock = Clock.tick(Clock.system(ZoneId.of("Asia/Calcutta")), Duration.ofSeconds(1));

2.9。tickMinutes ()

此静态方法在指定的时区返回整个分钟内的时钟即时滴答。这个时钟将永远有nano-of-secondsecond-of-minute字段设置为零:

ZoneId = ZoneId.of("Asia/Calcutta");Clock Clock = Clock. tickminutes (zoneId);System.out.println (clock.instant ());

会产生:

2018-04-07T17:26:00Z

通过使用可以实现相同的相同蜱虫():

时钟时钟= Clock.Tick(Clock.System(zhoudId.of(“Asia / Calcutta”)),持续时间.Mminutes(1));

2.10。withzone()

此方法返回具有不同时区的此时钟的副本。

如果我们有特定时区的时钟实例,我们可以为不同的时区制作该时钟的副本:

zoneid zonesingapore = zoneid.of(“亚洲/新加坡”);时钟Clocksingapore = Clock.System(Zonesingapore);system.out.println(clocksingapore.instant());zoned zonecalcutta = zoneid.of(“亚洲/加尔各答”);时钟ClockCalcutta = Clocksingapore.withzone(zonecalcutta);system.out.println(clockcalcutta.instant());

会产生:

2018-04-07T17:55:43.035Z 2018-04-07T17:55:43.035Z

2.11。getzone()

这个方法返回给定的时区时钟

Clock Clock = Clock. systemdefaultzone ();zhoudid zone = clock.getzone();system.out.println(zone.getId());

会产生:

亚洲/加尔各答

2.12。固定()

这个方法返回一个时钟总是返回相同的瞬间。此方法的主要用例是在测试中,其中固定的时钟确保测试不依赖于当前时钟。

时钟固定点= Clock.fixed(Instant.parse(“2018-04-29T10:15:15:30.00z”),zoneid.of(“亚洲/加尔各答”));system.out.println(固定点播);

会产生:

固定点科[2018-04-29T10:15:30z,亚洲/加尔各答]

3.结论

在本文中,我们深入研究了Java时钟类,以及与可用方法一起使用它的不同方式。

和往常一样,代码示例是可用的在GitHub

Java底部

通过。开始使用Spring 5和Spring Boot 2学习春天课程:

>>查看课程
本文评论关闭!