快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

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

时间:2011-07-29 Jesse Farnham

JSR 310 是一个用于执行与时间和日历有关的计算的 API,已经得到 Java SE 7 的推荐。该 API 的 目标是取代现有的两个构成 Java 的当前日期和时间 API 的类:java.util.Date 和 java.util.Calendar,同时仍然提供对这些旧有 API 的向后兼容访问。JSR 当前正在开发,并且该 API 有一个可用的试验性 Javadoc。

对 Java 6 日期/时间 API 的改进

JSR 310 日期/时间 API 试图通过提供更好的性能和易用性改进 Java 的当前日期/时间 API。例如, Java Calendar 类将日期同时存储为与标准纪元之间的偏移量(以毫秒为单位)以及一组日历字段(例如 ,星期几、几号以及月份)。此双精度表示导致在意外的时间重新计算日历字段,从而产生不可预测的性 能特点。与此相比,JSR 310 类仅将日期/时间表示存储为与 Date 和 Calendar 所使用的同一标准纪元 之间的偏移量(以毫秒为单位);仅当需要时才会计算日期等日历字段,并且不会使用这些日历字段进行 内部日期表示。

JSR 310 还对当前 Java 日期/时间模型进行了改进。Java 6 API 不包含表示本地时间(不具有关联 时区的时间)、持续时间或时间间隔的类。这迫使程序员使用令人困惑的设计做法,例如使用 int 表示 持续时间。JSR 310 包含表示上述各个概念的类,从而可以进行更为明确的程序设计。

最后,JSR 310 API 通过使用不可改变的类努力实现线程安全。Java 当前的日期/时间类 Date 和 Calendar 都是可改变的,因而都不是线程安全的。

JSR 310 日期/时间概念

JSR 310 API 利用了从多个第三方 Java 日期/时间 API 中获得的经验。JSR 310 主要基于 Joda Time API;其他影响因素包括 ICU、Time and Money 和 Calendar Date。JSR 310 的 API 是围绕 Joda Time 中使用的相同 5 个基本日期/时间概念构建的:

离散的时间线

瞬间

不完全时间

持续时间

时段

时间间隔

离散的时间线

像 Joda Time 一样,JSR 310 使用离散化的时间线:时间被建模为由小的固定持续时间分隔的连续的 瞬间序列。JSR 310 的离散时间线具有纳秒分辨率,因此可以表示时间“2008 年 1 月 1 日午夜后 1 纳 秒”,但不能表示时间“2008 年 1 月 1 日午夜后 1 皮秒”。该时间线上的每个离散纳秒都被视为一个 瞬间,如下所示。

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

时间:2011-07-29 Jesse Farnham

瞬间

瞬间是离散化时间线上的特定点。一个瞬间示例是“世界标准时间 2008 年 1 月 7 日 23:00:00.0” 。同样可以将瞬间定义为与标准纪元之间的偏移量(以纳秒为单位),例如“世界标准时间 1970 年 1 月 1 日之后 20,000,000 纳秒”。这两个说明都定义了离散时间线上的单个唯一点。瞬间不同于不完全 时间,后者定义了时间线上的一组时刻,而不是一个唯一的时刻。

JSR 310 API 提供了多个表示瞬间的类:Instant、OffsetDateTime 和 ZonedDateTime,所有这些类 都实现了 ReadableInstant 接口。OffsetDateTime 类表示日期、每日时间以及与世界标准时间 (coordinated universal time, UTC)之间的偏移量(如 +1:00)。类似的 ZonedDateTime 类包含时区 ID(如 America/New_York)而不是偏移量。给定的时区可能使用多个不同的偏移量,具体取决于一年中 的时间;例如,America/New_York 时区的偏移量在夏令时为 -4:00,在其他时间为 -5:00。因此,当必 须考虑特定于区域设置的时间规则(如夏令时)时,应该使用 ZonedDateTime 类。

ZonedDateTime 类提供了几种类别的用于创建、访问和修改瞬间的方法。要创建 ZonedDateTime 的新 实例以表示计算机的默认时区中的当前系统时间,可以使用 Clock.cu

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