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

Java 中的时间日期 API

自从 14 年发布 Java 8 以后,我们古老 java.util.Date 终于不再是我们 Java 里操作日期时间的唯一的选择。...其实 Java 里的日期时间的相关 API 一直为世猿诟病,不仅在于它设计分上工不明确,往往一个类既能处理日期又能处理时间,很混乱,还在于某些年月日期的数值映射存储反人类,例如:0 对应月份一月,11...往往我们得到某个年月值还需要再做相应的运算才能得到准确的年月日信息,直到我们的 Java 8 ,借鉴了第三方开源库 Joda-Time 的优秀设计,重新设计了一个日期时间 API,相比之前,可以说好用百倍...,相关 API 接口全部位于包 java.time 下。...限于篇幅,我们下篇将对比 Java 8 的新式日期时间 API,你会发现它更加优雅的设计和简单的操作性。

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

    Java 8 日期时间 API

    java 8 通过发布新的Date-Time API (JSR 310)来进一步加强对日期和时间的处理。...Java 8 日期时间 API 在旧版本的Java中,日期时间API存在诸多问题,其中有: 非线程安全 - java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一...设计很差 - Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义。...Java 8 在java.time包下提供了很多新的API。以下为两个比较重要的API: Local(本地) - 简化了日期时间的处理,没有时区的问题。...API 如果我们需要考虑到时区,就可以使用时区的日期时间API: public class Java8Tester { public static void main(String args[]

    1.3K10

    JAVA8实战 - 日期API

    JAVA8实战 - 日期API 前言 这一节我们来讲讲JAVA8的日期类,源代码的作者其实就是Joda-Time,所以可以看到很多代码的API和Joda类比较像。...日期类一直是一个比较难用的东西,但是JAVA8给日期类提供了一套新的API让日期类更加好用。 本文代码较多,建议亲自运行代码理解。...日期API的一些个人工具封装举例,以及在使用JDK8的时候一些个人的踩坑 最后希望通过本文能帮你摆脱new Date() 什么是ISO-8601?...JDK8日期类关于时区的强相关类(注意是JDK8才出现的类,不要误认为是对之前类的兼容),在之前的单元测试其实已经用到了相关时区的方法,在JDK8中使用了 ZoneId这个类来表示,但是我们有时候不知道怎么获取地区...总结: 在个人编写工具类的过程中,发现确实比之前的Date和Calendar这两个类用起来好很多,同时JDK8的日期类都是「线程安全」的。

    1.9K30

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

    Java基础(十六):String的常用API Java基础(十七):日期时间API Java基础(十八):java比较器、系统相关类、数学相关类 Java基础(十九):集合框架 Java基础(二十)...、构造器引用 Java基础(二十六):Java8 Stream流及Optional类 一、JDK8之前:日期时间API 1、java.lang.System类的方法 System类提供的public...API 1、为什么会有新的时间API 可变性:像日期和时间这样的类应该是不可变的 偏移性:Date中的年份是从1900开始的,而月份都从0开始 格式化:格式化只对Date有用,Calendar则不行 此外...,它们也不是线程安全的;不能处理闰秒等 总结:对日期和时间的操作一直是Java程序员最痛苦的地方之一 第三次引入的API是成功的,并且Java 8中引入的java.time API 已经纠正了过去的缺陷...新的日期时间API包含: java.time – 包含值对象的基础包 时钟(Clock) 本地日期(LocalDate) 本地时间(LocalTime) 本地日期时间(LocalDateTime

    63010

    【Java中操作日期】

    当我们在Java中操作日期时,可以使用java.util.Date和java.util.Calendar类来实现。为了提高代码的可读性和简化操作,我们可以创建一个日期工具类,封装常用的日期操作方法。...日期工具类的代码如下: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar...; import java.util.Date; public class DateUtils { /** * 提取日期的年份 * @param date 日期...在字符串转日期的方法parseDate中,需要传入字符串日期和日期格式,并且可能会抛出解析异常ParseException。 在日期转字符串的方法formatDate中,需要传入日期和日期格式。...在判断日期大小的方法compareDate中,返回-1表示日期1小于日期2,0表示日期1等于日期2,1表示日期1大于日期2。 可以根据具体需求,调用相应的方法来进行日期的操作。

    26610

    java8 异步api、循环、日期

    java8 异步api、循环、日期 转载请注明出处:https://www.cnblogs.com/funnyzpc/p/10801470.html 异步api 对于多任务耗时的业务场景,一般我们会用到线程异步处理...Thread 或者 Runnable 来实现异步,这是oracle官方做法,不过缺点很明显 对于复杂业务场景需要配置线程池 代码繁杂,对于新手容易造成不必要的bug 如果涉及到线程锁或线程通讯就棘手了 现在,java8...CompletableFuture.anyOf(a,b,c); String result = (String)any.get(); System.out.println(result); } 循环ForEach java8...:").concat(String.valueOf(v)))); String str = "hello"; } 新的时间类(LocalDate、LocalDateTime) java8...().format(DATE_TIME_FORMATTER)); } 日期加减 /**日期加减**/ @Test public void plusDay(){

    1.1K60

    Java8新日期处理API

    Java8引入了一套全新的时间日期API,本篇随笔将说明学习java8的这套API。 java.time包中的是类是不可变且线程安全的。...java8中日期与时间API的几个关键点 经过上面的例子,我们已经对java8的时间日期有了一定的了解,现在回顾一下 ●它提供了javax.time.ZoneId用来处理时区。...●它提供了LocalDate与LocalTime类 ●Java 8中新的时间与日期API中的所有类都是不可变且线程安全的,这与之前的Date与Calendar API中的恰好相反,那里面像java.util.Date...关于Java 8这个新的时间日期API就讲到这了。这几个简短的示例 对于理解这套新的API中的一些新增类已经足够了。我们学习了如何创建与修改日期实例。...我们还学习了如何在Java 8中用线程安全的方式对日期进行解析及格式化,而无需再使用线程本地变量或者第三方库这种取巧的方式。新的API能胜任任何与时间日期相关的任务。

    5.1K100

    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

    背景 java的日期和时间API设计不理想,java8引入新的时间和日期API就是为了解决这个问题。...老的日期API的核心类 缺点 Date 月从0开始,年最小从1900年开始,没有时区的概念 Calendar 月从0开始 DateFormat 线程不安全 其它 同时存在Date和Calendar难以选择...但是,Java 8中另外还提供了4种其他的 日历系统。...,Calendar有很多设计缺陷,自己设计的api中应该退出历史舞台。...新版的日期API中日期都是不可变的,并且是线程安全的;新版的日期API中区别人和机器的方式标识时间;你可以灵活的改变日期,或者通过更灵活的TemporalAdjuster来操作日期 你可以相对于某个时区和位置与格林尼治时间的偏差的方式来小时时区

    21210

    Java 8 新特性|(新)日期API_本地日期时间

    一、历史日期API包 java.util.Date 处理日期 java.util.Calendar 处理日历 java.util.GregoiranCalendar 日历表示 java.text.SimpleDateFormat...日期时间格式化 二、历史日期API 【坑】 1、 非线程安全:java.util.Date 并不是线程安全的。...2、设计不佳 :一方面日期和日期格式化分布在多个包中。另一方面,java.util.Date 的默认日期,年竟然是从 1900 开始,月从 1 开始,日从 0 开始,没有统一性。...三、Java 8 (新)日期API Java 8 终于重新设计了所有日期时间、日历及时区相关的 API。并把它们都统一放置在 java.time 包和子包下。...同时 Java 8 还针对原来复杂的 API 进行重新组合和拆分,分成了好多个类。 1、 新的日期时间 API 是线程安全的。

    52220

    Java中的时间和日期(三):java8中新的时间API介绍

    由于java7及以前的版本对时间的处理都存在诸多的问题。自java8之后,引入了新的时间API,现在对这些新的API及其使用进行介绍。...2.无时区的日期和时间LocalDate、LocalTime、LocalDateTime 与Calendar不同的是,在新版本的API中,将日期和时间做了分离,用单独的类进行处理。...需要注意的是,在新版本API中的日期,都是final修饰的内部属性,是不可变类。而Date则是transient的可变类。...这在实际操作的过程中需要注意,避免因为理解误差而导致出错。 这一块方法的命名规则也是我们在实际过程中值得参考的。 6.新旧日期格式转换 在java8的Date中增加了和Instant转换的方法。...中新版本API的一些介绍。

    2.7K30

    【Java】API——Calendar日期类使用+题目演示

    Java 中的 Calendar 类是用于处理日期和时间的抽象类。它提供了一种将日期和时间信息封装到单个对象中的方式,可以进行日期和时间的计算、格式化等操作。...下面是 Calendar 类的一些常用方法和属性: 导入对应包: import java.util.Calendar; 获取 Calendar 对象: Calendar calendar = Calendar.getInstance...(); // 获取当前日期和时间的 Calendar 对象 设置日期和时间: calendar.set(Calendar.YEAR, 2024); // 设置年份为 2024 calendar.set(...Calendar 类本身不直接支持日期和时间的格式化,通常需要借助 SimpleDateFormat 类来进行格式化操作。...请回答该年份(只写这个4位整数,不要写12月31等多余信息) 题目代码 import java.util.Calendar; public class Main { public static

    46210

    Java SE8 日期和时间API

    Java Date和Time API 规范要求Java使用的时间尺度为: 每天86400秒 每天正午与官方时间精确匹配 在其他时间点上,以精确定义的方式与官方时间接近匹配。...本地日期 Java API包含两种人类时间, 本地日期/时间 和时区时间。 本地日期/时间包含日期和当天的时间,但是与时区信息没有任何关联。 例如:2023年3月13日 就是一个本地日期。...Date和Time API 必须能够与已有类之间进行互操作,特别是java.util.Date、java.util.GregorianCalendar和java.sql.Date/Time/Timestamp...ZonedDateTime近似于java.util.GregorianCalendar,Java SE8中,有更细粒度的转换。...还有一类java.sql包中的日期和时间类。 可以传递一个DateTimeFormatter给使用java.text.Format的遗留代码。

    2.3K30

    【Java】常用API——日期时间类、System类

    专栏介绍 【Java】 目前主要更新Java,一起学习一起进步。 本期介绍 本期主要介绍常用API——日期时间类、System类 文章目录 1....日期时间类 1.1 Date类 概述 java.util.Date 类 表示特定的瞬间,精确到毫秒。...1.2 DateFormat类 java.text.DateFormat 是日期 / 时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文 本之间的转 换 , 也就是可以在 Date...在 Calendar 类中,月份的表示是以 0-11 代表 1-12 月。 日期是有大小关系的,时间靠后,时间越大。 2. ...System类 java.lang.System 类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在 System 类的 API 文 档中,常用的方法有: public

    1.8K20

    java中的日期类

    java中的日期类 一、日期类 1.1 第一代日期类 1.1.1 Date类 1.1.2 SimpleDateFormat类 1.2 第二代日期类Calendar 1.3 第三代日期类 1.3.1...第一代日期时间API主要有java.util.Date和日期时间格式化有关的java.text.DateFormat及其子类。...1.3 第三代日期类 java8中引入的java.time纠正了过去的缺陷,这就是第三代日期API。 java8吸收了Joda-Time的精华,以一个新的开始为Java创建优秀的API。...新的java.time中包含了所有关于本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间(LocalDateTime)、时区(ZonedDateTime)和持续时间(Duration...第二种通用模型是面向计算机的,在此模型中,时间线中的一个点表示一个整数,这有利于计算机处理。在UNIX中这个数从1970年开始,以秒为单位;同样在Java中也是从1970年开始的,但以毫秒为单位。

    5.2K20
    领券