首页
学习
活动
专区
工具
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时间库也提供了类似的功能来处理时区和夏令时的更新。

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

相关·内容

  • cas与自旋锁(轻量级锁就是自旋锁吗)

    CAS算法的作用:解决多线程条件下使用锁造成性能损耗问题的算法,保证了原子性,这个原子操作是由CPU来完成的 CAS的原理:CAS算法有三个操作数,通过内存中的值(V)、预期原始值(A)、修改后的新值。 (1)如果内存中的值和预期原始值相等, 就将修改后的新值保存到内存中。 (2)如果内存中的值和预期原始值不相等,说明共享数据已经被修改,放弃已经所做的操作,然后重新执行刚才的操作,直到重试成功。 注意: (1)预期原始值(A)是从偏移位置读取到三级缓存中让CPU处理的值,修改后的新值是预期原始值经CPU处理暂时存储在CPU的三级缓存中的值,而内存指定偏移位置中的原始值。 (2)比较从指定偏移位置读取到缓存的值与指定内存偏移位置的值是否相等,如果相等则修改指定内存偏移位置的值,这个操作是操作系统底层汇编的一个原子指令实现的,保证了原子性

    01

    java中关于时间的用法示例

    除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用Java 8的这套API。Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDateFormat实现成非线程安全的。看来Java已经意识到需要为时间及日期功能提供更好的支持了,这对已经习惯使用Joda时间日期库的社区而言也是件好事。关于这个新的时间日期库的最大的优点就在于它定义清楚了时间日期相关的一些概念,比方说,瞬时时间(Instant),持续时间(duration),日期(date),时间(time),时区(time-zone)以及时间段(Period)。同时它也借鉴了Joda库的一些优点,比如将人和机器对时间日期的理解区分开的。Java 8仍然延用了ISO的日历体系,并且与它的前辈们不同,java.time包中的类是不可变且线程安全的。新的时间及日期API位于java.time包中,下面是里面的一些关键的类:

    02
    领券