首页
学习
活动
专区
圈层
工具
发布

详解Java8的日期和时间API

详解Java8的日期和时间API 在JDK1.0的时候,Java引入了java.util.Date来处理日期和时间;在JDK1.1的时候又引入了功能更强大的java.util.Calendar,但是Calendar...所以在JDK1.8的时候,Java引入了java.timeAPI,这才真正修改了过去的缺陷,且更为好用。本篇就详细介绍一下JDK1.8的日期和时间API。...本篇主要包括以下内容: TOC Java8之前的日期和时间API的缺陷 在Java 8之前,所有关于时间和日期的API都存在各种使用方面的缺陷,主要有: Java的java.util.Date和java.util.Calendar...由于以上这些问题,出现了一些第三方的日期处理框架,例如Joda-Time,date4j等开源项目。但是,Java需要一套标准的用于处理时间和日期的框架,于是Java 8中引入了新的日期API。...:DateTimeFormatterBuilder.appendPattern(pattern).toFormatter(); 所以我们在实际格式化日期和时间的时候,是两种方式都可以使用的。

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

    Java SE8 日期和时间API

    Java Date和Time API 规范要求Java使用的时间尺度为: 每天86400秒 每天正午与官方时间精确匹配 在其他时间点上,以精确定义的方式与官方时间接近匹配。...本地日期 Java API包含两种人类时间, 本地日期/时间 和时区时间。 本地日期/时间包含日期和当天的时间,但是与时区信息没有任何关联。 例如:2023年3月13日 就是一个本地日期。...生日、假日、计划时间等通常最好都表示成本地日期和时间。 LocalDate是带有年、月、日的日期。...面向人类可读的日期和时间可以使用Locale相关的格式器。 对于日期和时间而言,有4中Locale相关的格式化风格,即SHORT、MEDIUM、LONG和FULL。...全新的Java Date和Time API 必须能够与已有类之间进行互操作,特别是java.util.Date、java.util.GregorianCalendar和java.sql.Date/Time

    2.4K30

    JSR310新日期API(二)-日期时间API

    JSR310新日期API(二)-日期时间API 前提 这篇文章主要介绍一下日期时间API中最常用的类库,分别是: java.time.Clock:时钟。...2019-01 2019-12 类型转换 这里主要总结一下JSR-310的日期时间类之间的转换以及JSR-310的日期时间类和已经存在的旧Java日期时间类之间的转换关系。...日期时间API中,长整型的时间戳毫秒也可以通过各种日期时间类的构造或者静态工厂方法创建对应的实例。...值得注意的是,只有同时包含日期和时间的类才能转换为Instant实例,这一点也很好理解,只包含时间或者只包含日期的类转换成瞬时时间会丢失部分时间值。...类的职责更加分明,时间、日期、日期时间需要使用明确的类去表示。 API封装更加合理,使得易用性提高。

    2.8K30

    Java8中关于日期和时间API的20个使用示例

    一、前言 随着lambda表达式、streams以及一系列小优化,Java8推出了全新的日期时间API,在一下的指南中我们将通过一些简单的示例来学习如何使用新API。...全新API的众多好处之一就是,明确了日期时间概念,例如:瞬时(instant)、期间(duration)、日期、时间、时区和周期。同时继承了Joda库按人类语言和计算机各自解析的时间处理方式。...Java 8日期时间API的重点 通过这些例子,你肯定已经掌握了Java8日期时间API的新知识点。现在我们来回顾一下这个优雅API的使用要点: 提供了javax.time.ZoneId获取时区。...Java8的所有日期和时间API都是不可变类并且线程安全,而现有的Date和Calendar API中的java.util.Date和SimpleDateFormat是非线程安全的。...我们还学到了在Java8中如何线程安全地解析和格式化日期,不用再使用蹩脚的线程局部变量技巧,也不用依赖Joda Time第三方库。新API可以作为处理日期时间操作的标准。

    3.9K20

    Java 中的时间日期 API

    其实 Java 里的日期时间的相关 API 一直为世猿诟病,不仅在于它设计分上工不明确,往往一个类既能处理日期又能处理时间,很混乱,还在于某些年月日期的数值映射存储反人类,例如:0 对应月份一月,11...往往我们得到某个年月值还需要再做相应的运算才能得到准确的年月日信息,直到我们的 Java 8 ,借鉴了第三方开源库 Joda-Time 的优秀设计,重新设计了一个日期时间 API,相比之前,可以说好用百倍...古老的日期时间接口 表示时刻信息的 Date 世界上所有的计算机内部存储时间都使用一个 long 类型的整数,而这个整数的值就是相对于英国格林尼治标准时间(1970年1月1日0时0分0秒)的毫秒数。...而我们的 DateFormat 就是用来处理格式化字符串和日期时间之间的转换操作的。...限于篇幅,我们下篇将对比 Java 8 的新式日期时间 API,你会发现它更加优雅的设计和简单的操作性。

    2.7K70

    Java 8 的时间日期 API

    上一篇文章『Java 的时间日期 API』中,我们学习了由 Date、Calendar,DateFormat 等组成的「传统时间日期 API」,但是传统的处理接口设计并不是很友好,不易使用。...终于,Java 8 借鉴第三方优秀开源库 Joda-time,重新设计了一套 API。 那么本篇文章就来简单学习一下新式的时间日期处理接口。...处理日期的 LocalDate 不同于 Calendar 既能处理日期又能处理时间,java.time 的新式 API 分离开日期和时间,用单独的类进行处理。...格式化日期时间 Java 8 的新式日期时间 API 中,DateTimeFormatter 作为格式化日期时间的主要类,它与之前的 DateFormat 类最大的不同就在于它是线程安全的,其他的使用上的操作基本类似...最后,关于 java.time 包下的新式日期时间 API,我们简单的学习了下,并没有深入到源码实现层次进行介绍,因为底层涉及大量的系统接口,涉及到大量的抽象类和实现类,有兴趣的朋友可以自行阅读 jdk

    1.9K40

    Java8新特性:新的日期和时间 API

    参考Java8新特性:默认方法 新的日期和时间 API:JDK 8 中新增了一个全新的日期和时间 API,它提供了更为丰富的日期和时间处理功能。...与传统的日期和时间 API 相比,新的日期和时间 API 在很多方面都更加优秀。它提供了更简洁和灵活的语法,并且更加易于理解和使用。...使用新的日期和时间 API 的一个好处是,它提供的类都是不可变的,这意味着它们一旦被创建就不能被修改。这样可以保证日期和时间的值不会被意外修改,并且可以提高代码的安全性和可维护性。...需要注意的是,新的日期和时间 API 并不是完全替代传统的日期和时间 API,它们两者是不同的两套系统。...如果需要向后兼容旧的代码,可以继续使用传统的日期和时间 API,但如果需要编写新的代码,建议使用新的日期和时间 API。

    41910

    Java基础(十七):日期时间API

    类 java.util.Date 表示特定的瞬间,精确到毫秒 构造器: Date():使用无参构造器创建的对象可以获取本地当前时间 Date(long 毫秒数):把该毫秒值换算成日期时间对象 常用方法...API 1、为什么会有新的时间API 可变性:像日期和时间这样的类应该是不可变的 偏移性:Date中的年份是从1900开始的,而月份都从0开始 格式化:格式化只对Date有用,Calendar则不行 此外...,它们也不是线程安全的;不能处理闰秒等 总结:对日期和时间的操作一直是Java程序员最痛苦的地方之一 第三次引入的API是成功的,并且Java 8中引入的java.time API 已经纠正了过去的缺陷...新的日期时间API包含: java.time – 包含值对象的基础包 时钟(Clock) 本地日期(LocalDate) 本地时间(LocalTime) 本地日期时间(LocalDateTime...java.time.format – 格式化和解析时间和日期 java.time.temporal – 包括底层框架和扩展特性 java.time.zone – 包含时区支持的类 尽管有68个新的公开类型

    63610

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

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

    2.5K30

    Python 日期和时间

    Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。 Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。...但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。 什么是时间元组?...:", localtime 以上实例输出结果: 本地时间为 : Thu Apr 7 10:05:21 2016 格式化日期 我们可以使用 time 模块的 strftime 方法来格式化日期,: time.strftime...)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身 获取某月日历 Calendar模块有很广泛的方法用来处理年历和月历,例如打印某月的月历:...对夏令时启用地区才能使用。

    24910

    日期和时间处理

    概述 在python中, date、time、datetime类提供了一系列处理日期、时间和时间间隔的函数。...在Python里我们大致可以把其实现日期时间类分为5个: date 仅用于日期处理(年、月、日) time 仅用于时间处理(时、分、秒、毫秒) datetime 可以处理日期和时间的组合(年、月、日、时...基础实例 直接上代码,一起来看看日期和时间的一些基础处理技巧: # -*- coding:utf-8 -*- __author__ = '苦叶子' # 导入日期和时间 from datetime...简写的月份名称 %B 完整的月份名称 %c 相应的日期表示和时间表示 %j 年内的一天(001-366) %p A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始...不过关于日期时间的模块所提供的功能,这里仅仅展示了最简单的,更强大的功能,强去查看datetime、time相关的官网文档,以更深入掌握。 尤其是对datetime和time模块的掌握很重要!!!

    2.8K70

    python日期和时间

    %B 本地完整月份名称 %c 本地相应的日期和时间表示 %d 一个月中的第几天(01-31) %H 一天中的第几个小时(24小时制,00-...0周) %w 一个星期中的第几天(0-6,0是星期天) %W 和%U基本相同,不同的是%W以星期一为一个星期的开始 %x 本地相应日期 %X...当使用strptime()函数时,只有当在这年中的周数和天数被确定的时候%U和%W才会被计算 除了strftime函数,还有asctime函数可以将结构化时间转为时间字符串,只是这个函数最多仅接受一个参数...处理时间和日期的标准库,功能要比 time模块 强大,且使用起来更为方便~ datetime模块中定义的类 类 说明 datetime.date 表示日期,常用的属性有:year, month和day...它们由datetime和time类使用,以提供自定义时间的而调整。

    3.1K20

    Java日期和时间

    Local 表示一个国家或地区的日期、时间、数字、货币等格式 zh_CN: 表示的是中国的Local,日期用年月日表示2020-07-05 en_US: 表示的是美国的Local,日期用日月年表示05/...java.time的API java.time提供了新的日期和时间API LocalDate/LocalTime/LocalDateTime ZonedDateTime/ZoneId Instant Formatter...… 新API的特点: 严格区分日期、时间 不变类(类似String) Month范围112(JanDec) Week范围17(MonSun) LocalDateTime LocalDate...plusDays() 在现在的日期加上具体天数 minusHous() 在现在的时间减去具体的小时 plusWeeks() 在现在的日期时间加上具体的周数 // +5 天...ZonedDateTime 有时区,可以与long进行转换 ZonedDateTime ZonedDateTime = LocalDateTime + ZoneId ZonedDateTime: 带时区的日期和时间

    1.5K10

    Java 编程问题:三、使用日期和时间

    本章介绍的基本问题将非常有助于了解日期-时间 API 的整体情况,并将像拼图中需要拼凑起来的部分一样解决涉及日期和时间的复杂挑战。 问题 使用以下问题来测试您的日期和时间编程能力。...换句话说,开发人员必须知道 Java 日期时间 API 使用的一组符号,以便识别有效的格式模式。...使用基于日期的值的时间段 Period类意味着使用基于日期的值(年、月、周和天)来表示时间量。这段时间可以用不同的方法获得。...65 日期时间的加减 这个问题的解决方案依赖于专用于处理日期和时间的 Java API。让我们在下一节中看看它们。 使用Date 对于Date对象,解决方案可能依赖于Calendar实例。...新的 Java 日期时间 API 默认处理夏令时;因此,使用夏令时的夏-冬周期区域将有两个ZoneOffset类。

    6.8K20
    领券