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

为什么joda时间会更新时间和偏移量,而java时间不会?

Joda时间库是一个开源的Java日期和时间处理库,它提供了比Java标准库更加灵活和强大的日期和时间操作功能。Joda时间库之所以会更新时间和偏移量,而Java时间库不会,是因为它们在处理时区和夏令时的方式上存在一些差异。

Joda时间库在设计之初就考虑到了时区和夏令时的处理问题,因此它提供了一些特殊的类和方法来处理这些情况。在Joda时间库中,时区信息被封装在DateTimeZone类中,可以通过该类来获取和设置时区信息。而夏令时的处理则通过DateTime类的withEarlierOffsetAtOverlap()withLaterOffsetAtOverlap()方法来实现。这些方法可以在存在重叠时刻(即夏令时结束时刻)时,选择使用较早或较晚的偏移量。

相比之下,Java时间库在早期版本中对时区和夏令时的处理并不完善。Java 8之前的版本中,java.util.Datejava.util.Calendar类的设计存在一些缺陷,导致在处理时区和夏令时时容易出现问题。因此,Java时间库没有提供像Joda时间库那样的特殊方法来处理时区和夏令时的更新。

然而,从Java 8开始,Java引入了新的日期和时间API,即java.time包,也称为JSR-310。这个新的API在设计上参考了Joda时间库,并且提供了更好的时区和夏令时的处理能力。在java.time包中,时区信息被封装在ZoneId类中,夏令时的处理则通过ZonedDateTime类的withEarlierOffsetAtOverlap()withLaterOffsetAtOverlap()方法来实现。因此,从Java 8及以后的版本开始,Java时间库也可以很好地处理时区和夏令时的更新。

总结起来,Joda时间库之所以会更新时间和偏移量,而Java时间库不会,是因为它们在处理时区和夏令时的方式上存在一些差异。然而,从Java 8开始,Java时间库也提供了类似的功能来处理时区和夏令时的更新。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Joda Time项目java8时间api

Joda Time出现的背景 在java1.0中,对日期时间的支持只能依赖java.util.Date类。正如类名所表达的,这个类无法表示日期,只能以毫秒的精度表示时间。...在jdk1.8之前,这些问题使得用户们使用了第三方日期时间库,比如Joda Time。jdk1.8大量借鉴了Joda Time特任。...Joda Time项目 Java SE 8之前的标准日期时间类很差。通过解决这个问题,Joda-Time在Java SE 8之前成为Java的实际标准日期时间库。...没有时区概念,比如utc时间 为2010-12-1T11:22:33.567Z,如果是表示时区概念一般2010-12-1T11:22:33.567+08:00 关于Joda Time其他的日期时间api...总结 java8提供的日期-时间对象是不可变的。操作的结果总是返回一个新的实列,老的日期时间对象不会发生改变。所以提供的这些类都很简单,但是需要我们多去使用它。

98920

为什么不建议使用Date,而是使用Java8新的时间日期API?

Java 8:新的时间日期API 在Java 8之前,所有关于时间日期的API都存在各种使用方面的缺陷,因此建议使用新的时间日期API,分别从旧的时间日期的API的缺点以及解决方法、Java 8...新的时间日期API进行讲解。...旧的时间日期的API的缺陷 Javajava.util.Date java.util.Calendar 类易用性差,不支持时区,而且都不是线程安全的。...parse 方法的地方进行加锁 => 线程阻塞性能差 使用 ThreadLocal 保证每个线程最多只创建一次 SimpleDateFormat 对象 => 较好的方法 Java 8 新的时间日期API...Java 8的日期时间类包含 LocalDate、LocalTime、Instant、Duration 以及 Period,这些类都包含在 java.time 包中,Java 8 新的时间API的使用方式

2K30

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

从结果中可以发现,Calendar年份的传值不用再减去1900了,这Date是不一样的,不知道这种行为不一致会不会让有些人抓狂。...Moment.js .Net:日期时间处理库Joda-Time 所以说,Java它并不孤单(自我安慰一把) 自我救赎:JSR 310 因为原生的Date日期时间体系存在“七宗罪”,催生了第三方Java日期时间库的诞生...不客气的说JSR 310是在Joda-Time的基础上建立的,参考了其绝大部分的API实现,因此若你之前是Joda-Time的重度使用者,现在迁移到Java 8原生的JSR 310日期时间上来几乎无缝。...310不接受null值,Joda-Time把Null值当0处理 JSR 310所有抛出的异常是DateTimeException,它是个RuntimeException,Joda-Time都是checked...来,文末3个思考题帮你复盘: 偏移量Z代表什么含义? ZoneIdZoneOffset是如何建立对应关系的? 若某个城市不在ZoneId列表里面,想要获取其UTC偏移量该怎么破?

98771

11.4 Java 日期时间

格林威治时间是多年来人们所熟知的国际标准时间为什么要改用世界协调时间呢?简单说来,是因为格林威治时间不够精确。...Joda-Time 是 Java SE 8 之前的行业标准日期时间Joda-Time 为 Java 日期时间类提供了质量替代。现在要求用户迁移到 java.time (JSR-310)。...Local-DateTime 内部不会记录时区信息,只会单纯记录年月日时分秒等信息, ZonedDateTime 除了记录日历信息,还会记录时区,它的其他大部分构建方法都需要显式传递时区。...System.out.println(new SimpleDateFormat("yyy-MM-dd HH:mm:ss SSS").format(date)); // 不会存在偏移量...,使用最原始的 Instant.now(); 即可,因为不包含时区差异,所以不会存在偏移量

4.2K20

Java时间处理神器之Joda-Time

如果说在logstash发现Joda-Time,并没引起我的兴趣,但是后来,我在hadoop,solr里面都发现有Joda-Time的踪影,hadoopsolr恰恰当今最流行的开源框架,所以就抽空看了看这个精美的小工具...现在来看看 Joda Time,一个面向 Java™ 平台的易于使用的开源时间/日期库。正如您在本文中了解的那样,Joda-Time 轻松化解了处理日期时间的痛苦繁琐。...Joda 简介 为什么要使用 Joda?考虑创建一个用时间表示的某个随意的时刻 — 比如,2000 年 1 月 1 日 0 时 0 分。我如何创建一个用时间表示这个瞬间的 JDK 对象?...Joda JDK 互操作性 JDK Calendar 类缺乏可用性,这一点很快就能体会到, Joda 弥补了这一不足。...这一定义与 JDK 相同,这就是为什么任何 Joda Instant 子类都可以与 JDK Date Calendar 类兼容的原因。

2.2K50

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

下面就来具体了解下它有哪些坑爹的设计槽点,一起不吐不快。 日期时间API的七宗罪 罪状一:Date同时表示日期时间 java.util.Date被设计为日期 + 时间的结合体。...从结果中可以发现,Calendar年份的传值不用再减去1900了,这Date是不一样的,不知道这种行为不一致会不会让有些人抓狂。...Moment.js .Net:日期时间处理库Joda-Time 所以说,Java它并不孤单(自我安慰一把) 自我救赎:JSR 310 因为原生的Date日期时间体系存在“七宗罪”,催生了第三方Java日期时间库的诞生...310不接受null值,Joda-Time把Null值当0处理 JSR 310所有抛出的异常是DateTimeException,它是个RuntimeException,Joda-Time都是checked...来,文末3个思考题帮你复盘: 偏移量Z代表什么含义? ZoneIdZoneOffset是如何建立对应关系的? 若某个城市不在ZoneId列表里面,想要获取其UTC偏移量该怎么破?

74640

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

Joda 大型项目 Joda 实际上是涵盖众多用于 Java 语言的替代 API 的大型项目,因此从技术上讲,使用 Joda Joda-Time 名称表示相同的意思是一种误称。...我将介绍以下主题: 日期/时间替代库简介 Joda 的关键概念 创建 Joda-Time 对象 以 Joda 的方式操作时间 style 以 Joda 的方式格式化时间 Joda 简介 为什么要使用 Joda...Joda JDK 互操作性 JDK Calendar 类缺乏可用性,这一点很快就能体会到, Joda 弥补了这一不足。...这一定义与 JDK 相同,这就是为什么任何 Joda Instant 子类都可以与 JDK Date Calendar 类兼容的原因。...然而,我建议您试着使用一下这个样例应用程序,看看编写您的应用程序代码有多么简单,这样您就可以随意地在 Joda 的 Chronology DateTimeZone 之间切换,同时不会影响到代码的其余部分

1.5K70

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

Java中处理日期时间是很常见的需求,基础的工具类就是我们熟悉的DateCalendar,然而这些工具类的api使用并不是很方便强大,于是就诞生了Joda-Time这个专门处理日期时间的库。...值得注意的是,Java 8中的java.time包中提供的APIJoda-Time并不完全相同。...的多不如的精,如果能够用一个工具快速熟练可靠地解决问题,在时间成本有限的情况下,就不用刻意追求学习其它可替代的库 引入MAVEN依赖 joda-time...注意,在增减时间的时候,想象成自己在翻日历,所有的计算都将符合历法,由Joda-Time自动完成,不会出现非法的日期(比如:3月31日加一个月后,并不会出现4月31日)。...它们的详细含义,请参照Java Doc,现查现用,用需求驱动学习。 日历系统时区 Joda-Time默认使用的是ISO的日历系统,ISO的日历系统是世界上公历的事实标准。

1.6K20

(32) 剖析日期时间 计算机程序的思维逻辑

本节下节,我们讨论在Java中如何进行日期时间相关的操作。...日期时间是一个比较复杂的概念,Java API中对它的支持不是特别好,有一个第三方的类库反而特别受欢迎,这个类库是Joda-Time,Java 1.8受Joda-Time影响,重新设计了日期时间API...虽然之前的设计有一些不足,但Java API依然是被大量使用的,本节介绍Java 1.8之前API中对日期时间的支持,下节介绍Joda-Time,Java 1.8中的新API与Joda-Time比较类似...时刻Epoch Time (纪元时) 所有计算机系统内部都用一个整数表示时刻,这个整数是距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。为什么要用这个时间呢?...内部,根据字段设置或修改时间时,Calendar更新fields数组对应字段的值,但一般不会立即更新其他相关字段或内部的毫秒数的值,不过在获取时间或字段值的时候,Calendar重新计算并更新相关字段

2K100

吐槽java时间那点事儿 Joda Time

2.9.7 为什么要用joda?...如果我们只关心日期或者时间,可以使用LocalDateLocalTime类。...Joda更赋予了它强大的能力,就像穿越一样在时间线上游走。 由于它存在于多个类中,如果你希望先构建这个对象再使用,import包会有点小麻烦,因为名字一样存在于不同的类中。...小结 Joda-time 的确是比jdk的DateCalendar好用,但是(还是要说但是),实际开发中真的用得到这么细粒度的时间计算的场景并不多,往往我们常用的也就是获取当前时间,偶尔用一下从字符串到时间的...BTW,java8中的Date Time API是遵循jsr310,该规范的主导者即是joda-time的作者 Stephen Colebourne,但PropertytoString(fmt)特性并没有引入

89320

释放开发人员生产力:“文档级”代码了解一下?

通过编写一份文档,随着时间的推移,它的重要性逐渐显现出来。你可能只需写一次,但它将会被读取多次,频次可达数百次,甚至上千次。...•防止无谓的重复问题打扰:一些问题可以直接记录在文档中,这样当有人来问你时,你可以让他们直接查看文档,不必再重复解释一遍。。二、为什么大多数人都不喜欢写文档 为什么很多人还没有养成写文档的习惯呢?...FuncGPT(慧函数)可以很好的解决以下代码问题:1、代码规范:生成符合Java语法代码规范的函数代码,生成的代码将更易于阅读理解。2、代码复用:生成的函数代码倾向于使用可复用的最佳实践。...3、代码注释:生成的代码包含清晰的代码注释,帮助开发工程师理解函数的用途输入输出。良好的注释对于后期维护非常重要。4、代码结构:生成的代码倾向于使用良好的代码结构,避免过长的函数过度嵌套。...以任务管理系统中使用Java函数实现计算任务剩余时间的功能为例。

26850

Java 常用类

Java.lang.StringBuffer代表 可变的字符序列 即,可以动态的拼接String 不会开辟新的空间消耗内存! 很多方法与String相同,作为参数传递时,方法内部可以改变值。...Date java.util包 构造器: java.util 包提供了 Date 类来封装当前的日期时间 Date 类提供两个构造函数来实例化 Date 对象 第一个构造函数使用当前日期时间来初始化对象...Java8 新增API 对日期时间的操作一直是Java程序员最痛苦的地方之一 因此: Java8 之前出现了,Joda-Time.Jar包 周大-泰~ 来更方便的操作,日期API 而后,JDK8...不在需要用户,每次都要引入 Joda-Time.Jar 依赖~ 当然如果,你现在公司是Java7 你还想用这些时间ApI 还需要引入 Joda-Time.Jar包 本地日期(LocalDate)...* *100 获取随机数进两位小数,强制转换(int) 截取小数点.. * 因为包含0 所以+1 就不会出现呢0 的情况了!!!

6410

(33) Joda-Time 计算机程序的思维逻辑

Joda-Time 上节介绍了JDK API中的日期时间类,我们提到了JDK API的一些不足,并提到,实践中有一个广泛使用的日期时间类库,Joda-Time,本节我们就来介绍Joda-Time。...俗话说,工欲善其事,必先利其器,Joda-Time就是操作日期时间的一把利器。 Joda-Time的官网是http://www.joda.org/joda-time/。...Joda-Time的主要类Java API的类也有一个粗略的对应关系: Joda-Time Java API 说明 Instant Date 时刻 DateTime Calendar 年历 DateTimeZone...格式化 Java API中,格式化必须使用一个DateFormat对象,Joda-Time中,DateTime自己就有一个toString方法,可以接受一个pattern参数,看例子: //2016...时间段的计算 JDK API中没有关于时间段计算的类,Joda-Time包含丰富的表示时间用于时间段计算的方法,我们来看一些例子。

97480
领券