jdk1.8中为什么要引入新的日期时间API[java]

由于早期Java中的Date和Calendar类存在可变性、偏移量问题、线程不安全以及不支持闰秒等缺陷,Java 8引入了新的时间日期API以解决这些问题。新API更符合不可变性原则,避免了日期计算的偏移,并提供了更好的线程安全性和闰秒处理。此外,格式化和操作也更加便利,大大提升了开发者在处理时间日期时的体验。
摘要由CSDN通过智能技术生成

我们为什么要在jdk1.8中提出新的时间日期API

  • jdk最早的版本中(1.0)时就有了java.util.Date类,但是java.util.Date类中很多方法在jdk1.1时候就已经过时了,因为我们的jdk1.1中出现了java.util.Calender类(因为我们的java.util.Date类不适合国际化)
而且我们的Calendar类并不比Date类号多少,我们的Calendar类和Date类面临了很多问题:
  1. 可变性:
    我们的Date类和我们的Calendar类都具有可变性
    • 像我们的日期时间这样的类应该是不可变的
      • 也就是类似于String的不可变性,值不可以改变,如果要改变值就要创建一个新的对象
  2. 偏移性
    我们如果要使用Date对象的构造方法来创建一个指定时间的日期,这个时候我们我们在这个对象

这个时候我们的年份是从1900年开始的,月份是从0开始的,就会涉及一个偏移量的问题

eg:

Date date1 = new Date(2020,9,8);
/*
这个时候我们不是创建了一个2020年9月8日的对象,而是创建了一个3920年10月8日的对象
*/

这个就是偏移量,会大大的影响我们创建时间日期对象3

  1. 格式化
    格式化只对Date有效,而Calendar则不能格式化
  2. 线程不安全
    Date和Calendar都是线程不安全的,它们都不可以处理"闰秒"等一些问题
    • 闰秒:当我们的世界时(民用时)和原子时相差超过±0.9秒时,就把世界时向前拨1秒(负闰秒),或者向后拨1秒(正闰秒)

由于上面的一些问题,导致我们的程序员在jdk1.8之前对时间日期类的操作一直是一个很头疼的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值