Joda Time,企业级应用程序 时间处理必备时间库
2016-02-17 16:23
281 查看
0x000
Joda Time据说会进入到java 8,但是java 8 我们不会立刻使用,你懂得,中国特色。所以导入joda-time包来进行时间处理在j2ee中还是很常见的。
特点:
1. JDK 互操作性, 操作完可以转换为jdk时间继续处理
转载自http://h819.iteye.com/blog/611099
Joda 的关键日期/时间概念
Joda 使用以下概念,它们可以应用到任何日期/时间库:
不可变性(Immutability) 瞬间性(Instant) 局部性(Partial) 年表(Chronology) 时区(Time zone)
我将针对 Joda 依次讨论每一个概念。
不可变性
我在本文讨论的 Joda 类具有不可变性,因此它们的实例无法被修改。(不可变类的一个优点就是它们是线程安全的)。我将向您展示的用于处理日期计算的 API 方法全部返回一个对应 Joda 类的新实例,同时保持原始实例不变。当您通过一个 API 方法操作 Joda 类时,您必须捕捉该方法的返回值,因为您正在处理的实例不能被修改。您可能对这种模式很熟悉;比如,这正是 java.lang.String 的各种操作方法的工作方式。瞬间性
Instant 表示时间上的某个精确的时刻,使用从 epoch 开始计算的毫秒表示。这一定义与 JDK 相同,这就是为什么任何 Joda Instant 子类都可以与 JDK Date 和 Calendar 类兼容的原因。更通用一点的定义是:一个瞬间 就是指时间线上只出现一次且唯一的一个时间点,并且这种日期结构只能以一种有意义的方式出现一次。
局部性
一个局部时间,正如我将在本文中将其称为局部时间片段一样,它指的是时间的一部分片段。瞬间性指定了与 epoch 相对的时间上的一个精确时刻,与此相反,局部时间片段指的是在时间上可以来回 “移动” 的一个时刻,这样它便可以应用于多个实例。比如,6 月 2 日 可以应用于任意一年的 6 月份(使用 Gregorian 日历)的第二天的任意瞬间。同样,11:06 p.m. 可以应用于任意一年的任意一天,并且每天只能使用一次。即使它们没有指定一个时间上的精确时刻,局部时间片段仍然是有用的。我喜欢将局部时间片段看作一个重复周期中的一点,这样的话,如果我正在考虑的日期构建可以以一种有意义的方式出现多次(即重复的),那么它就是一个局部时间。
年表
Joda 本质 — 以及其设计核心 — 的关键就是年表(它的含义由一个同名抽象类捕捉)。从根本上讲,年表是一种日历系统 — 一种计算时间的特殊方式 — 并且是一种在其中执行日历算法的框架。受 Joda 支持的年表的例子包括:ISO(默认) Coptic Julian Islamic
Joda-Time 1.6 支持 8 种年表,每一种都可以作为特定日历系统的计算引擎。
时区
时区是值一个相对于英国格林威治的地理位置,用于计算时间。要了解事件发生的精确时间,还必须知道发生此事件的位置。任何严格的时间计算都必须涉及时区(或相对于 GMT),除非在同一个时区内发生了相对时间计算(即时这样时区也很重要,如果事件对于位于另一个时区的各方存在利益关系的话)。DateTimeZone 是 Joda 库用于封装位置概念的类。许多日期和时间计算都可以在不涉及时区的情况下完成,但是仍然需要了解 DateTimeZone 如何影响 Joda 的操作。默认时间,即从运行代码的机器的系统时钟检索到的时间,在大部分情况下被使用。
相关文章推荐
- JVM_Bind问题的解决方案
- [多线程] 生产者消费者模型的BOOST实现
- Reactjs Mixins
- 如何打log 检查 Android CTS failure
- [多线程] 生产者消费者模型的BOOST实现
- SpringMVC项目,启动项目怎么总是报找不到log4j.properties文件
- ruby 2.1安装mysql2 gem 报错
- android 动画
- Java重定向标准输入/输出
- 有用的shell命令集锦
- 利用ThreadLocal模式管理Session
- 查看Linux input子系统信息
- 使用springmvc编写restful接口
- [转载] How Many Partitions Does An RDD Have
- MongoDB 学习笔记(五)索引
- JavaScript中匀速运动和变速运动的代码总结
- C# xml可序列化多值枚举脚本
- KVM虚拟化笔记(十七)------V2V迁移(二)ESXI 到KVM迁移
- HTTPServerMock从手工到平台的演变
- 读取指定目录下的所有文件生成一个excel