快速业务通道

JSR 310:一种新的Java日期/时间API - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
ration.durationBetween (ReadableInstant startInclusive, ReadableInstant endExclusive) 工厂方法很有用。

Clock systemClock = Clock.system(); ZonedDateTime instant1 = systemClock.currentZonedDateTime(); try{Thread.sleep(1000)} //Use up some time catch(InterruptedException e){System.out.println("Error")} ZonedDateTime instant2 = systemClock.currentZonedDateTime(); Duration d = Duration.durationBetween(instant1, instant2);

时段

像持续时间一样,时段表示一段已经消逝的时间。时段的示例有“4 年零 8 天”和“1 小时”。如这 些示例所示,时段是使用日历字段(年、日、小时等)定义的,而不是通过确切的纳秒数确定的。

首先,时段和持续时间可能看起来像是表达同一概念的不同方式;但是,正如下面的瞬间/时段加法示 例所演示的那样,无法将给定的时段转换为确切的纳秒数。瞬间/时段加法将时段的每个日历字段的值添 加到瞬间的相应字段。瞬间/持续时间加法与此相反,该加法将持续时间的长度(以纳秒为单位)添加到 瞬间。乍看起来,向给定的瞬间添加 86,400,000,000,000 纳秒(24 小时)持续时间似乎应该与添加“1 天”的时段产生相同的结果,但情况并非总是如此,原因是日历字段“日”不具有固定的纳秒长度。大多 数日都是 24 小时长,但由于存在夏令时,因此某些日要长一些或短一些。向瞬间添加 24 小时持续时间 总是将该瞬间恰好推进 24 小时,而添加一个 1 天的时段总是将日推进 1,同时使每日时间保持不变。

例如,如果将时段“1 日”添加到瞬间“美国东部时间 2008 年 3 月 9 日午夜”,则得到的基于字 段的加法将产生“美国东部时间 2008 年 3 月 10 日午夜”。但是,如果将一个 24 小时的持续时间添 加到瞬间“美国东部时间 2008 年 3 月 9 日午夜”,则结果为“美国东部时间 2008 年 3 月 10 日 01:00:00.0”。两者之间的差别源于:夏令时开始于美国东部时间 2008 年 3 月 9 日 02:00:00;因此 ,该日只有 23 小时长。

JSR 310 通过多个类提供了时段功能,其中最为重要的类是 Period、Periods.Builder 以及 Periods.Builder 的子类:Periods.SecondsBuilder、Periods.MinutesBuilder(它是 SecondsBuilder 的子类)等(一直到 Periods.YearsBuilder)。

要创建 Period 的实例,您必须首先使用静态 Periods.periodBuilder() 方法获取 Periods.Builder 的实例。此方法返回一个 Periods.YearsBuilder 对象,这是 Periods.Builder 的一个间接子类。 Periods.YearsBuilder 类提供了一个方法 years(int numYears),该方法将 numYears 年添加到所生成 的时段。使用 YearsBuilder 的直接和间接超类(MonthsBuilder、DaysBuilder、HoursBuilder、 MinutesBuilder 和 SecondsBuilder)可以将其他日历字段添加到该时段。例如, MinutesBuilder.minutes(int numMinutes) 向所生成的时段添加 numMinutes 分钟。上述所有方法都返 回 this,因而,只需一条语句就可以生成具有多个日历字段的时段。请注意,通过将一个负整数传递到 适当的 builder 方法中,可以对时段执行减法。在将所有需要的字段添加到该时段之后,将调用 Periods.PeriodBuilder.build() 方法以返回 Period 的完整实例。

//Build a period representing "8 years, 3 months." Period thePeriod =   Periods.periodBuilder().years(8).months(3).build();

JSR 310:一种新的Java日期/时间API(5)

时间:2011-07-29 Jesse Farnham

时间间隔

时间间隔表示时间线上的两个瞬间之间的一段时间。因此,“世

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号