快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
界标准时间 2007 年 1 月 1 日(包 括)到世界标准时间 2008 年 1 月 1 日(不包括)”是一个时间间隔。时间间隔可以包括或不包括起始 瞬间和结束瞬间。

JSR 310 提供了 InstantInterval 类来表示时间间隔。要创建 InstantInterval 的实例,可以使用 多个工厂方法之一:

//Create some intervals. ZonedDateTime time1 = systemClock.currentZonedDateTime(); try{Thread.sleep(1000)} //Use up some time catch(InterruptedException e){System.out.println("Error")} ZonedDateTime time2 = systemClock.currentZonedDateTime(); //Create an interval with inclusive start and exclusive end. InstantInterval interval1 = InstantInterval.intervalBetween(   time1.toInstant(), time2.toInstant()); //Create an interval with exclusive start and inclusive end. boolean startInclusive = false; boolean endInclusive = true; InstantInterval interval2 = InstantInterval.intervalBetween(   time1.toInstant(), startInclusive,   time2.toInstant(), endInclusive);

使用 JSR 310 日期/时间类

前面的部分介绍了 5 个基本 JSR 310 日期/时间概念,并且说明如何实例化表示这些概念的类。本部 分演示一些可以使用 JSR 310 API 进行的日历计算。

对了进行演示,假设您正在开发的程序采用多个在不同时间发生并且按照特定时间间隔重复发生的事 件作为输入。该程序输出所有同时发生两个或更多个事件的时间。您可以使用一个 ZonedDateTime 和一 个 Duration 来表示在经过固定长度的时间之后重新发生的瞬间事件;要生成该事件的下一个实例,可以 向表示上一个实例的 ZonedDateTime 添加 Duration:

//ZonedDateTime firstTime is the time the event first occurs //Duration repeatTime is the duration after which event recurs //TimeZone defaultZone is your computer''s default time zone ZonedDateTime secondTime = ZonedDateTime.dateTime(   firstTime.toInstant().plus(repeatTime), defaultZone);

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

时间:2011-07-29 Jesse Farnham

如果您具有一个在特定 数量的年、月或日之后重复发生的事件,则可以通过向表示上一个实例的 ZonedDateTime 添加一个 Period 来生成下一个实例:

//ZonedDateTime firstTime is the time the event first occurs //Period repeatPeriod is the period after which event recurs ZonedDateTime secondTime = firstTime.plus(repeatPeriod);

要测试两个瞬间事件是 否同时发生,可以使用 ZonedDateTime.equals(Object other) 方法:

//time1 and time2 are ZonedDateTimes representing events if (time1.equals(time2)){   System.out.println("The two events occur simultaneously."); }

如果您需要表示一个非瞬间事件,则使用 ZonedDateTime 并非最佳选择。不完全时间 更加适合于表示非瞬间事件(如年假)。要确定一个由 ZonedDateTime 表示的事件和一个由不完全时间 (例如,MonthDay)表示的事件是否同时发生,可以使用 MonthDay.matchesDate(LocalDate date) 方法 。如果 LocalDate(它是一个不带每日时间的日期)中的月和日字段与 MonthDay 中的月和日字段匹配, 则此方法返回 true。

//Monthday christmas is a partial representing December 25. //ZonedDateTime time1 represents an instantaneous event if (christmas.matchesDate(time1.localDate())){   System.out.println("The event occurs on Christmas."); }

最后,通过 InstantInterval 可以最佳地表示按照特

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号