`
somefuture
  • 浏览: 1091206 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java8中的时间处理0 - api介绍

 
阅读更多

Java 8 Date Time API是我们java开发一直寻找的时间处理工具。java从一开始设计的时间类就让人头疼,好在现在终于有了java8。

为什么我们需要这套API

只要是有这么几个理由:

  1. Java的日期和时间类设计的不统一,在 java.utiljava.sql 包里分别有一个Date类。而他们的格式化和解析类却在 java.text 包。
  2. java.util.Date 包含了时间和日期,而 java.sql.Date 只有日期。而且第二个也很难找到实用场景。不知道java干嘛搞这么个东西!
  3. 没有明确定义的时间点类和格式类。有一个抽象类 java.text.DateFormat 。一般我们使用的是 SimpleDateFormat 来格式化和解析日期。
  4. 日期类是可变的,导致不是线程安全的。这个是使用 Date 和Calendar 的最大问题。
  5. Date类没有时区信息,所以java引入了java.util.Calendar  和ava.util.TimeZone 这两类。不过他们也有上面所有的问题。

之前我们热衷于使用Joda工具包。不过现在不用了!

Java 8 Date

Java 8 Date Time API 解决了上面的问题:

  1. 不可变: java8中的日期时间类是线程安全的。
  2. 关注度区分:  新的API区分了人类易读和机器易读(unix时间戳)的类。它定义了Date, Time, DateTime, Timestamp, Timezone 等等。
  3. 更清晰:  所有类中的方法定义都更加一目了然。比如获取当前时间可以使用 now() 方法。而且所有类都有 format() 和parse() 而不再须有单独的类。

    所有类在编写上都使用了工厂模式和策略模式,只要会用一个类,其他的用法都一样。

  4. 工具操作:  所有的类都可以加、减、格式化、解析、分别获取日期和时间。

Java 8 Date 包

Java 8 Date Time API 有这几个包:

  1. java.time 包: 这个是基包。下面有 LocalDate, LocalTime, LocalDateTime, Instant, Period, Duration等。他们都是不可变类,和String一样。一般我们使用这个包的类就够了。
  2. java.time.chrono 包: 这个包是给非标准ISO日历系统定义的通用类。可以继承 AbstractChronology 来创建自己的日历系统。
  3. java.time.format 包:  这个包下面是格式化和解析类。一般我们不用直接用这里面的类,因为基包里的类就包含了转换方法。
  4. java.time.temporal 包: 这个包下面的时间对象一般用来生成特定的日期。比如某月的第一天或最后一天。里面的方法都很好识别,都是用with开头的。
  5. java.time.zone 包: 这个包是时区支持。

 请到后续文章查看用法。

2
1
分享到:
评论

相关推荐

    redmine-java-api

    9. **版本控制**:redmine-java-api-master可能表示这是该项目的主分支,意味着它是最新的、未发布的开发版本,可能存在不稳定因素。 10. **文档和示例**:一个完善的API不仅要有功能完备的代码,还应提供清晰的...

    官方版本-Java8-中文版-API(帮助你快速了解Java8新特性)

    6. **日期和时间API**:Java 8的`java.time`包替换掉了原有的`java.util.Date`和`Calendar`,提供了更加易用且功能丰富的日期和时间API,如`LocalDate`, `LocalTime`, `LocalDateTime`等。 7. **默认方法**:在接口...

    Java8-API-中文文档-完整版

    这份"Java8-API-中文文档-完整版"是学习和理解这些新特性的宝贵资源,它涵盖了Java 8的全貌,包括核心库、语言特性和API改进。 1. **函数式编程**: - **Lambda表达式**:Java 8引入了lambda表达式,使得编写简洁...

    java-jdk-api-1.8-中文版-CHM

    3. **新日期时间API**:在Java 8中,`java.time`包取代了旧的`java.util.Date`和`java.util.Calendar`,提供了更为直观和强大的日期时间处理功能。`LocalDate`, `LocalTime`, `LocalDateTime`, `ZonedDateTime`等类...

    JAVA8API-官方文档下载-中文版

    5. **日期和时间API**: Java 8引入了`java.time`包,提供`LocalDate`、`LocalTime`、`LocalDateTime`等类,替代了原有的`java.util.Date`和`Calendar`,使日期和时间的操作更加直观。 **模块系统(Project Jigsaw)...

    java8中文api

    在Java 8之前,日期和时间处理主要依赖于`java.util.Date`和`java.util.Calendar`,这两个类存在许多问题。Java 8引入了`java.time`包,包括LocalDate、LocalTime、LocalDateTime、ZonedDateTime等类,提供了更强大...

    javax.servlet-api-3.1.0.jar javax.el-api-2.2.4.jar javax.el-2.2.4.jar

    综上所述,`javax.servlet-api-3.1.0.jar`, `javax.el-api-2.2.4.jar`, `javax.el-2.2.4.jar`这些文件对于构建基于Java的Web应用程序至关重要,它们提供了与Web服务器通信和处理用户请求的核心功能,同时也支持高效...

    jsp-api.jar和servlet-api.jar

    在提供的压缩包子文件名称中,我们有两个文件:servlet-api-2.5-6.1.9.jar和jsp-api-2.1.jar。这里,servlet-api-2.5-6.1.9.jar可能是一个特定版本的Servlet实现,版本号2.5代表Servlet 2.5规范,而6.1.9可能是实现...

    java1.8-api-中文.zip

    5. **Date和Time API的改进**:Java 8引入了全新的日期和时间API(java.time包),替代了旧的java.util.Date和Calendar,提供了更好的日期、时间、时区处理功能。 6. **接口的默认方法**:接口可以定义带有实现的...

    java8中文文档API

    流API是Java 8中另一个重要特性,它为处理集合提供了新的途径。流可以看作是从数据源(集合、数组等)生成的一系列元素序列,支持过滤、映射、聚合等操作。例如,`list.stream().filter(s -> s.length() > 3)....

    java1.8-api

    5. **日期和时间API**:Java 8改进了日期和时间的处理,引入了`java.time`包,提供了`LocalDate`、`LocalTime`、`LocalDateTime`等类,替代了之前易用性较差的`java.util.Date`和`java.util.Calendar`。 6. **并发...

    Java-api文档

    10. **Stream API**:也是Java 8的一个重要特性,提供了对集合、数组等数据结构进行高效操作的API,支持并行处理和函数式编程风格。 Java API文档是学习和查阅Java技术的宝典,无论你是初学者还是资深开发者,都...

    google-api-java-client,谷歌API的Java客户端库.zip

    `google-api-java-client`是Google官方提供的一款用于与Google API交互的Java库,它使得Java开发者能够方便地访问Google的各种服务,如Drive、Calendar、Gmail等。这个库是开源项目,遵循Apache 2.0许可证,允许自由...

    JAVA_API1.6文档(中文)

    java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...

    java-jdk-api-1.8.rar

    - **日期和时间API**:Java 8更新了日期和时间处理的API,引入了`java.time`包,替代了过时的`java.util.Date`和`java.util.Calendar`。 - **方法引用**:允许直接引用一个类的方法,而无需创建匿名函数。 - **...

    java api文档jdk-6u30-apidocs

    `java.util`提供了一组通用的数据结构和算法,如集合框架、日期和时间处理。`java.io`则涉及输入/输出操作,包括文件读写、流处理等。 2. **集合框架**:Java API 6u30中的集合框架是一个强大的工具,它允许开发者...

    java8 API 中文版

    下面我们将深入探讨Java 8 API中的核心变化和重要特性。 1. **Lambda表达式** Lambda表达式是Java 8最显著的特性之一,它允许以简洁的方式定义匿名函数。这种语法使得代码更加简洁,特别是处理函数式编程场景时,...

    java-8u151-api-all(CHM 版-英文版-官方原版打包)

    **Date和Time API** 的重大改革,如`java.time`包,提供了更加直观和强大日期时间处理功能,取代了传统的`java.util.Date`和`java.util.Calendar`。 3. **泛型**:Java 8继续支持泛型,它允许在类、接口和方法中...

    jakarta commons-API

    Commons Lang提供了一些Java语言核心类的补充,包括字符串处理、日期和时间操作、数学计算等。`Commons-lang-2.2-API.chm`文档覆盖了这些实用工具类,使得开发者可以更高效地处理常见的编程任务。 4. **Commons ...

    java-jdk1.8-jdk-8u181-windows-x64.zip

    3. **新的日期和时间API**:Java 8提供了新的java.time包,替代了旧的Calendar和Date API,提供了更直观、更易用的时间日期处理功能。 4. **Stream API**:这是一个用于处理集合的新API,提供了序列化操作的方式,...

Global site tag (gtag.js) - Google Analytics