java中的日期处理工具datetime_Java 中时间相关处理工具类库 joda time

注意如果使用 Java SE 8 及以上,建议使用 java.time (JSR-210) 来代替使用 Joda-time。

Java 中日期,时间处理类库 Joda time

依赖

joda-time

joda-time

2.10.2

最新的版本官网查看

使用

5 个最常用的 date-time 类:

Instant - Immutable Class,用来表示时间轴上一个瞬时的点

DateTime - Immutable Class,用来替换 JDK 的 Calendar 类

LocalDate - Immutable Class,表示一个本地的日期,而不包含时间部分(没有时区信息), 适合表示出生日期

LocalTime - Immutable Class,表示一个本地的时间,而不包含日期部分(没有时区信息), 适合表示商店的每天开门 / 关门时间

LocalDateTime - Immutable Class,表示一个本地的日期-时间(没有时区信息)

Instant

表示时刻,瞬时的时间

Interval

表示时间间隔,是一个半开区间,包括开始时刻,但不包括结束时刻。结束时刻永远要大于或者等于开始时刻。有两个实现 Interval 和 MutableInterval

Duration

表示持续时间,用 milliseconds 表示,duration 通常从 interval 中获取。

instant + duration = instant

Period

一段时间,通常比如三年五个月两天 7 小时。他和 Duration 的区别在于,Period 是不精确的(在 milliseconds 级别)。比如有一个月的时间段,那么在二月一号加上一个月会得到三月一号,而在三月一号加上一个月,会得到四月一号,但是这两个 duration(in milliseconds)是完全不一样的。

instant + period = instant

有两个实现 Period 和 MutablePeriod

DateTime

有很多构造方法

DateTime dateTime1 = new DateTime();

DateTime dateTime2 = new DateTime(2015,11,11,0,0,0);

DateTime dateTime3 = new DateTime(1447171200000L);

DateTime dateTime4 = new DateTime(new Date());

DateTime dateTime5 = new DateTime("2015-11-11T00:00:00.000+08:00");

LocalTime

Joda Time 中的 LocalTime 表示的是一个没有日期的时间

常用方法

LocalTime.now()

Interval 和 Period

Joda-Time 为时间段的表示提供了支持。

Interval:保存了一个开始时刻和一个结束时刻,因此能够表示一段时间,并进行这段时间的相应操作

Period:保存了一段时间,比如:6 个月,3 天,7 小时这样的概念。可以直接创建 Period,或者从 Interval 对象构建。

Duration:保存了一个精确的毫秒数。同样地,可以直接创建 Duration,也可以从 Interval 对象构建。

JDK8 中的时间相关

因为 Joda Time 非常稳定可靠,在 JDK 8 以前成为了 Java 处理时间相关的事实标准,JDK 8 中引入了 java.time 等一组新 api 用来处理时间日期,遵守 JSR 310,弥补了 Java 在时间处理方面的不足。Joda-Time 的作者 Stephen Colebourne 和 Oracle 一起共同参与了这些 API 的设计和实现。

JDK 8 以前 Date 和 Calendar 类存在的问题:

非线程安全,需要额外的代码来处理线程安全问题

接口设计,之前的接口处理 day-to-day 操作困难

时区相关时间,需要额外处理

相关类:

Instant 时刻

Duration

LocalDate 日期,2015-01-01

LocalTime 时间

LocalDateTime 日期和时间 2015-01-01T14:02:43.455

基本上他们的接口定义都是 ofXX 来构造一个实例,而通过 parseXX 来将一个现有的时间戳转变成对应的实例。

reference

https://mvnrepository.com/artifact/joda-time/joda-time ↩

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值