`

Joda Time : 处理时间问题

 
阅读更多
参考原文:http://dreamhead.blogbus.com/logs/226738702.html
更多的详细介绍: Joda-Time 简介 http://h819.iteye.com/blog/611099

你觉得一个API设计得差到什么份上,才会把自己差不多的API全部Deprecated掉。java.util.Date便是这样的奇葩。因为它的API几乎都是反直觉的,几乎所有敢于用它的Java程序员都吃过它的亏。想初始化个2013年的第一天,还真不那么容易:
  Date firstDayOf2013 = new Date(113, 0, 1);


如果你是个Java新手,你能猜出113是从哪来的吗?(好吧,它是2013-1900,至于为什么是1900,这真得问API的设计者了)。

Joda Time就是人们实在无法忍受这样东西的产物。同样的代码用Joda Time实现:
  DateTime firstDayOf2013 = new DateTime().withDate(2013, 1, 1);


无论如何,你知道这能看出这些参数的含义了。不只如此,你还可以计算两天后是什么日子:
  firstDate.plusDays(2);


日期格式化,也是JDK Date系列API里一大特色,你必须把代码写成下面这样:
  new SimpleDateFormat("yyyy.MM.dd").format(firstDayOf2013)


作为一个初始化很慢的构造函数,你还必须每次调用,因为它不是线程安全的。同样的代码,在Joda Time里,我们可以用DateTimeFormatter:
  DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy.MM.dd");

  ...

  formatter.print(dateTime);


请尽管放心大胆把formatter声明成一个字段,因为它是线程安全的。

当然,Joda Time的强大远不止于此。当然,JDK也并不是那么完全的自暴自弃,于是,有了一个JSR 310专门设计新的Date API。JSR 310的spec lead是Steven Colebourne,此人正是Joda Time的作者。不过,虽然JSR 310为我们描绘了Date的全新景象,但Java 8出来之前就先别打它的主意了,乖乖地用Joda Time吧。
分享到:
评论

相关推荐

    joda-time-2.9.9

    《Joda-Time 2.9.9:时间日期处理的高效工具》 Joda-Time是Java平台上一个著名的日期和时间处理库,它弥补了Java标准库中日期时间处理的不足。在2.9.9这个版本中,我们看到了对日期时间操作的强大支持和丰富的功能...

    joda-time-android,具有android专门化的joda时间库.zip

    **Joda-Time for Android**,一个专为Android平台优化的时间日期处理库,是对标准Java日期时间API的一个强大补充。在Android开发中,由于系统默认的日期时间处理功能相对有限且性能不佳,开发者经常会选择Joda-Time...

    Java日期计算之Joda-Time

    `Duration`类处理时间跨度(不包含日期),`LocalAmount`接口代表局部量,如小时、分钟,可以用于调整日期时间。 9. **不可变性与线程安全**: Joda-Time的所有日期时间类都是不可变的,这意味着对它们的操作不会...

    joda-time源码

    它弥补了Java标准库`java.util.Date`和`Calendar`在处理时间问题上的不足,提供了更加强大、灵活且易用的API。在本文中,我们将深入探讨Joda-Time的核心概念、主要功能以及如何在实际项目中使用它。 1. **核心概念*...

    joda-time-2.9.9-dist.tar.gz

    5. **Duration**: 表示两个时刻之间的精确时间差,以毫秒为单位,适合处理时间间隔而不涉及日期变化的情况。 **时区处理** Joda-Time对时区的处理也优于标准库,它支持IANA时区数据库,可以准确处理夏令时等复杂...

    JodaTime-ohos鸿蒙日期和时间处理库

    **JodaTime-ohos:鸿蒙系统的日期与时间处理库** 在开发鸿蒙系统(HarmonyOS)应用时,处理日期和时间是一项常见的任务。`JodaTime-ohos` 是一个专为鸿蒙系统设计的日期和时间处理库,它基于广泛使用的 Java 库 `...

    joda-time2.4源码及编译

    1. **格式化与解析**:Joda-Time提供DateTimeFormatter,可以自定义日期时间格式进行解析和格式化,避免了使用SimpleDateFormat带来的线程安全问题。 2. **时间区间操作**:通过Interval类,可以方便地进行时间区间...

    Joda-Time标准Java日期和时间类的一个高质量替代品

    Joda-Time是一个非常重要的库,尤其在Java SE8之前,它是处理日期和时间问题的首选工具。这个库提供了比Java内置的日期和时间类(如`java.util.Date`和`java.util.Calendar`)更为强大且易用的功能。在Java社区中,...

    joda-time-2.7-dist

    《Joda-Time:Java平台上的高效日期时间处理库》 ...版本2.7的发布,不仅提供了丰富的功能,还确保了良好的可读性和可维护性,对于任何需要处理时间日期问题的Java项目来说,都是一个不可或缺的工具。

    joda-time-2.5.zip

    Joda-Time是一款开源的Java日期和时间处理库,由Stephen Colebourne创建,旨在替换Java SE 1.4及之前的日期时间API。它提供了一个更强大、更灵活的框架,便于处理复杂的日期、时间、时区问题。Joda-Time 2.5是其一个...

    joda-time2.10.1

    Java中处理时间与日期是很常见的操作,jdk中基础的工具类就是我们熟悉的Date和Calendar,然而这些工具类的api使用并不是很方便和强大。于是就诞生了Joda-Time这个专门处理日期时间的库。(JDK1.8的API已经重写了日期...

    Joda - Time

    5. **LocalTime**: 只包含时间部分,不包含日期,适合处理时间相关的操作。 6. **LocalDateTime**: 结合了LocalDate和LocalTime,不包含时区信息。 7. **DateTimeZone**: 处理时区转换,提供了比`java.util.Time...

    joda-time-example

    Joda Time是一个在Java平台上广泛使用的开源日期和时间处理库,它弥补了Java标准库中日期和时间操作的不足。这个名为"joda-time-example"的项目,显然是一个示例集合,展示了如何有效地利用Joda Time库进行日期和...

    joda-time2.0学习笔记

    Joda-Time 是一个非常流行的 Java 库,用于处理日期和时间相关的操作。相较于 Java 标准库中的 `java.util.Date` 和 `java.util.Calendar` 类,Joda-Time 提供了更加强大且易用的 API。它遵循 ISO8601 国际标准,...

    joda-time-1.6.2.jar

    为了解决这个问题,我们可以引入Joda-Time库,这是一个强大的日期和时间处理库,提供了丰富的API和更好的日期时间处理方式。"joda-time-1.6.2.jar"就是这个库的特定版本。Joda-Time不仅提供了一种更灵活的方式来表示...

    joda-time.zip

    这两个概念构成了Joda-Time处理日期和时间的基础。 1. **类结构与主要类** - **Instant**:表示自1970年1月1日00:00:00 UTC以来的毫秒数,提供了一种简单的方式来处理时间点。 - **LocalDate**、**LocalTime**和*...

    clojure.joda-time:Joda-Time的惯用Clojure包装器

    总结,`clojure.joda-time` 是 Clojure 社区为改善 Java 日期时间处理而创建的一个优秀库,它通过提供一套符合 Clojure 风格的 API,让开发者可以更加自然地进行日期时间相关的编程,同时充分利用了 Joda-Time 强大...

    joda-2.5.jar

    《Joda-Time 2.5:Java日期时间处理的得力助手》 Joda-Time是Java平台上一个著名的日期和时间处理库,它弥补了Java标准库中日期时间处理的不足。2.5版本是Joda-Time的一个关键更新,带来了诸多改进和新特性,受到了...

Global site tag (gtag.js) - Google Analytics