首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Joda-Time优雅的处理日期时间

Java中处理日期时间很常见的需求,基础的工具类就是我们熟悉的Date和Calendar,然而这些工具类的api使用并不是很方便和强大,于是就诞生了Joda-Time这个专门处理日期时间的库。...由于Joda-Time很优秀,在Java 8出现的很长时间内成为Java日期时间处理的事实标准,用来弥补JDK的不足。...在Java 8中引入的java.time包一组新的处理日期时间的API,遵守JSR 310。...它们的详细含义,请参照Java Doc,现查现用,用需求驱动学习。 日历系统和时区 Joda-Time默认使用ISO的日历系统,而ISO的日历系统世界上公历的事实标准。...然而,值得注意的,ISO日历系统在表示1583年之前的历史时间不精确的。 Joda-Time默认使用JDK的时区设置。如果需要的话,这个默认值可以被覆盖的。

1.6K20

Java时间处理神器之Joda-Time

以前总觉得在Java里面处理各种日期转换很麻烦,虽然我也封装过一些工具包,但是总体感觉还是不够完美,也使用过一些开源的apachecommons里面的时间处理工具类感觉还是不够灵活和强大。...如果您也曾使用这个类处理过日期/时间值,那么您就知道它使用起来有多麻烦。因此当我接触到 Joda-Time — 面向 Java 应用程序的日期/时间库的替代选择 — 我决定研究一下。...并且 Joda 与 JDK 百分之百可互操作的,因此您无需替换所有 Java 代码,只需要替换执行日期/时间计算的那部分代码。...使用 java.util.Date?事实上这是行不通的,因为自 JDK 1.1 之后的每个 Java 版本的 Javadoc 都声明应当使用 java.util.Calendar。...,可以使用这个类来只存储一天当中的某个时间

2.3K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Joda Time项目和java8时间api

    Joda Time出现的背景 在java1.0中,对日期时间的支持只能依赖java.util.Date类。正如类名所表达的,这个类无法表示日期,只能以毫秒的精度表示时间。...DateFormat不是线程安全的,二个线程同时使用formatter解析日期,你可能会得到无法预期的结果。 在jdk1.8之前,这些问题使得用户们使用了第三方日期时间库,比如Joda Time。...jdk1.8大量借鉴了Joda Time特任。 Joda Time项目 Java SE 8之前的标准日期时间类很差。...通过解决这个问题,Joda-Time在Java SE 8之前成为Java的实际标准日期时间库。...如果我们工作中的jdk版本是1.8版本之前可以使用Joda Time项目,Joda项目中其实包括的不止Joda Time,还包括Joda-Money ,Joda-Beans,Joda-Convert ,

    99420

    放弃 Calender优雅地使用Joda-Time吧Joda 大型项目Joda 简介Joda 和 JDK 互操作性Joda 的关键日期时间概念

    如果您也曾使用这个类处理过日期/时间值,那么您就知道它使用起来有多麻烦。 因此当我接触到 Joda-Time — 面向 Java 应用程序的日期/时间库的替代选择 — 我决定研究一下。...并且 Joda 与 JDK 百分之百可互操作的,因此您无需替换所有 Java 代码,只需要替换执行日期/时间计算的那部分代码。...Joda 大型项目 Joda 实际上涵盖众多用于 Java 语言的替代 API 的大型项目,因此从技术上讲,使用 JodaJoda-Time 名称表示相同的意思一种误称。...事实上这是行不通的,因为自 JDK 1.1 之后的每个 Java 版本的 Javadoc 都声明应当使用 java.util.Calendar。...使用 JDK 实在太痛苦了,即使简单的日期计算,比如上面这个计算。 正是一年的这样一个时刻,我第一次领略到 Joda-Time 的强大。

    1.5K70

    Java 时间处理

    01 — Date 时间类(java.util.Date) 在标准 Java 类库中包含一个 Date 类。它的对象表示一个特定的瞬间,精确到毫秒。...查看 API 文档大家可以看到很多方法过时了,JDK1.1 之前的 Date 包含了:日期操作、字符串转化成时间对象,时间对象。 1.1 之后日期操作使用:Canlendar 类来。...04 — Joda-Time 传统的我们一般日期处理(格式化时间等)时往往会用java.util.Date这个类,但是对于一些复杂的日期处理就显得力不从心了。...我们在平时项目中可能会遇到将格式化的时间转化为几天,几个小时这样的形式,那么用 joda-time 就是一个很好的选择。...现在给大家推荐一个很好的第三方日期处理类 org.joda.time.DateTime 既然无法摆脱时间,为何不设法简化时间处理? 这就是 joda-time。

    2.2K10

    编写Java代码时应该避免的6个坑

    但是,在 Java 5 之后,编译器会自动为我们完成此操作,并且可以安全地使用带有 "+" 的字符串连接。...它不是无法被修改的 它无法处理时区 充满弃用但仍在使用的遗留代码 当程序中出现对日期支持的需求时,util 包中的 Date、Calendar 和 rest time 类就出现了。...java.time 包与第三方的 joda.time 非常相似,这意味着我们不需要在使用 joda.time,Jdk8 已经有了内置支持。...我们列出 java.time 中使用的三个最重要的类 LocalDate 表示特定时区的日期(不包括一天中的时间)。...(或任何与 java.util 相关的日期) 不要使用 joda.time(因为它与 java.time 非常相似) 如果只对某个区域的日期感兴趣,请使用 LocalDate 如果对某个区域的日期时间感兴趣

    17020

    Web项目中愉快的使用Java8日期API

    Java8发布之前繁琐的日期API使我们不得不借助第三方的Jar包Joda来对日期进行操作,而Java8的日期java.time包则是由Joda的作者来进行操刀,我相信不管是因为Java8...性能的提升、函数式编程、流、新的日期API的引入、还是开发者对新兴技术的热情拥抱,我们的新项目基本都是基于Java8开发了,而且因为Java良好的向后兼容性,我们老的项目升级为Java8也并非难事。...zoneId = ZoneId.systemDefault(); //获取该时间点在该时区上的时间日期信息 ZonedDateTime zonedDateTime = now.atZone...JSR310提供支持,只需要在日期字段上加注解 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Mybatis mybatis中数据库字段对应的实体类时间也是默认使用...,实体类为LocalDateTime等的字段就可以识别 SpringDataJPA Spring的做法跟Mybatis的类似,使用一个Jsr310JpaConverters类来做转换,SpringBoot

    1K50

    Java日期 API 真烂

    如果你把 java.sql.Date 通过 JDBC 插入数据库,你会发现时分秒都丢失了,因此如果你同时需要日期时间,你应该使用 Timestamp,它也是 java.util.Date 的子类。...返回的时间相对于“1970-01-01 00:00:00” 的毫秒数差值…… 尝试 Joda 吧 最开始的时候,Date 既要承载日期信息,又要做日期之间的转换,还要做不同日期格式的显示,职责较繁杂,...从 JDK 1.1 开始,这三项职责分开了: 使用 Calendar 类实现日期时间字段之间转换; 使用 DateFormat 类来格式化和分析日期字符串; 而 Date 只用来承载日期时间信息。...原有 Date 中的相应方法废弃。不过,无论 Date,还是 Calendar,都用着太不方便了,这是 API 没有设计好的地方。...比如 Date 和 Calendar 目前可变对象,你可以随意改变对象的日期或者时间,而 Joda 就将 DateTime 对象设计成 String 对象一样地不可变,能够带来线程安全等等的好处,因此这一点也将被

    61810

    尽管Java8时间库有所进步,但总感觉Low了点,有同感吗?

    p=5133 最近有网友表示,在自己公司和项目中,实际上时间库应用不算太多,用到也是非常简单的一些应用场景,一般情况下连Java8的时间库都很少用到,今天为了写个时间查询,把他折腾的够呛,他没有领悟到...还是他的功力不够?也还是Java8的时间库真的太 Low ?...一起来看看吧 需求:给定一个时间范围:Date from, Date to,查询出在这时间范围内的记录并按日期(年月日)分组,每条记录的日期包含日期时间的,需要进行Truncate。...但是 Java 内部的 Date 和 Localdate 相互之前转换起来真的不够“温柔”。...所以,还是看个人选择! 说归说,吐槽归吐槽。Localdate 和 Localdatetime 的优先级还是要比 Date 高。毕竟,Java8 已经不推荐使用 Date 了。

    52920

    Java8日期类的一个具体应用案例

    %E5%90%97/ 其中提到了一个日期应用场景: 项目开发阶段,有一个关于下单发货的需求:如果今天下午3点前进行下单,那么发货时间明天,如果今天下午3点后进行下单,那么发货时间后天,如果被确定的时间周日...作者建议:“对于时间的计算我们要考虑joda-time这种类似的成熟时间计算框架来写代码,它会让代码更加简洁和易读。”...{ @Test @DisplayName("jodajava8日期") void jodaAndJava8DateTest() { LocalDateTime...总结 结合之前未采用java8时封装日期的痛苦经历,最近接触java8日期时间之后,下决心以后采用java8或者增强的日期时间库来实现日期相关功能。...joda-time 对日期类之间的转换支持更好一些,提供了更丰富的日期处理函数,未来有复杂的日期需求会考虑使用

    39220

    11.4 Java 日期时间

    Java 8 之前日期时间 API Java 8 之前日期 java.util.Date,Date 类比较古老,其中的很多方法现在已经废弃了,但是目前仍然有很多程序还在使用 Date 类。...Joda-Time Java SE 8 之前的行业标准日期时间Joda-Time 为 Java 日期时间类提供了质量替代。现在要求用户迁移到 java.time (JSR-310)。...这个版本被认为稳定的,值得使用 2.x 版本。 Joda-Time 需要 java SE 5 或更高版本,并且没有任何依赖项。...Java 8 之后提供了新的日期时间相关类、接口和枚举,这些类型内容非常多。但是使用起来非常方便。...LocalDate 不包含具体时间日期,比如 2014-01-14。它可以用来存储生日,周年纪念日,入职日期等。

    4.2K20

    Java8新特性】06 新的日期时间:LocalDate LocalTime LocalDateTime

    Java8 由Oracle在2014年发布,Java5之后最具革命性的版本了。...不幸的Calendar没有扛起大任,仍然暴露出很多设计缺陷,导致写代码时容易出现问题,比如月份还是从0开始。 由于Date和Calendar推出的时间很接近,造成程序员对使用哪个类感到困惑。...Date和Calendar的种种问题导致程序员们纷纷抛弃原生的jdk日期时间库,转投第三方组件如Joda-Time,Java设计者似乎意识到这个问题,在借鉴Joda-Time的基础上终于在Java8版本中加入了新的日期时间包...Java8 新的日期时间API (1)日期时间常用类 针对日期时间Java8提供了LocalDate, LocalTime, LocalDateTime, Instant等常用类。...java8之前使用java.util.TimeZone类处理时区,java8新增ZoneId替代TimeZone。

    1.3K20

    Java Review (二十一、基础类库----日期时间类)

    Java 原本提供了 Date 和 Calendar 用于处理日期时间的类,包括创建日期时间对象,获取系统当前日期时间等操作 。...Java 8 吸取了 Joda-Time 库( 一个被广泛使用日期时间库)的经验 , 提供了一套全新的日期时间库 。 在计算机中只需要存储一个整数表示某一时刻。...boolean after(Date when): 测试该日期是否在指定日期 when 之后 。 boolean before(Date when): 测试该日期是否在指定日期 when 之前 。...当然,也可以创建自己的 Calendar 子类,然后将它作为 Calendar 对象使用。 Calendar 类一个抽象类,所以不能使用构造器来创建 Calendar 对象 。...【6】:DateTimeFormatter详解 【7】:Java日期时间新旧API转换、在数据库中存储日期时间

    78530

    详解Java8的日期时间API

    本篇主要包括以下内容: TOC Java8之前日期时间API的缺陷 在Java 8之前,所有关于时间日期的API都存在各种使用方面的缺陷,主要有: Javajava.util.Date和java.util.Calendar...由于以上这些问题,出现了一些第三方的日期处理框架,例如Joda-Time,date4j等开源项目。但是,Java需要一套标准的用于处理时间日期的框架,于是Java 8中引入了新的日期API。...新的日期APIJSR-310规范的实现,Joda-Time框架的作者正是JSR-310的规范的倡导者,所以能从Java 8的日期API中看到很多Joda-Time的特性。...Duration两个时间戳的差值,所以使用java.time中的时间戳类,例如Instant、LocalDateTime等实现了Temporal类的日期时间类为参数,通过Duration.between...时区 对时区处理的优化也是Java8中日期时间API的一大亮点。之前在业务中真的遇到过一些奇葩的时区问题,在旧的java.util.TimeZone提供的时区不全不说,操作还非常繁琐。

    2.1K11

    Java日期时间库插件 -- Joda Time.

    (不可变类的一个优点就是它们线程 安全 的)。用于处理日期计算的 API 方法全部返回一个对应 Joda-time 类的新实例,同时保持原始实例不变。...你可能对这种模式很熟悉,这正是 java.lang.String 的各种操作方法的工作 方式。 瞬间性 Instant 表示时间上的某个精确的时刻,使用从 epoch 开始计算的毫秒表示。...更通用一点的定义:一个瞬间 就是指时间线上只出现一次且唯一的一个时间点,并且这种日期结构只能以一种有意义的方式出现一次。...DateTimeZone Joda 库用于封装位置概念的类。许多日期时间计算都可以在不涉及时区的情况下完成,但是仍然需要了解 DateTimeZone 如何影响 Joda 的操作。...好了, 我所了解的就是这么多, 我主要还是从如何使用的角度去学习这个东西, 最后总结了它的几个特性, 当然Joda-Time的强大之处远不止这些, 大家在以后的工作中可以尝试着去使用它.

    2.4K110

    一文告诉你Java日期时间API到底有多烂

    最重要的Calendar的API使用起来真的很不方便,而且该类在语义上也完全不符合日期/时间的含义,使用起来更显尴尬。...Moment.js .Net:日期时间处理库Joda-Time 所以说,Java它并不孤单(自我安慰一把) 自我救赎:JSR 310 因为原生的Date日期时间体系存在“七宗罪”,催生了第三方Java日期时间库的诞生...对于Java来说,如此重要的API模块岂能被第三方库给占据,开发者本就想简单的处理个日期时间还得导入第三方库,使用也太不方便了吧。当时的Java如日中天,因此就开启了“收编”Joda-Time之旅。...不客气的说JSR 310Joda-Time的基础上建立的,参考了其绝大部分的API实现,因此若你之前Joda-Time的重度使用者,现在迁移到Java 8原生的JSR 310日期时间上来几乎无缝。...即便这样,也并不能说JSR 310就完全等于Joda-Time的官方版本,还是有些许诧异的,例举如下: 首先当然包名的差别,org.joda.time -> java.time标准日期时间包 JSR

    98871
    领券