Java 8 Date Time API是我们java开发一直寻找的时间处理工具。java从一开始设计的时间类就让人头疼,好在现在终于有了java8。
为什么我们需要这套API
只要是有这么几个理由:
- Java的日期和时间类设计的不统一,在
java.util
和java.sql
包里分别有一个Date类。而他们的格式化和解析类却在java.text
包。 -
java.util.Date
包含了时间和日期,而java.sql.Date
只有日期。而且第二个也很难找到实用场景。不知道java干嘛搞这么个东西! - 没有明确定义的时间点类和格式类。有一个抽象类
java.text.DateFormat
。一般我们使用的是SimpleDateFormat
来格式化和解析日期。 - 日期类是可变的,导致不是线程安全的。这个是使用 Date 和Calendar 的最大问题。
- Date类没有时区信息,所以java引入了
java.util.Calendar
和ava.util.TimeZone
这两类。不过他们也有上面所有的问题。
之前我们热衷于使用Joda工具包。不过现在不用了!
Java 8 Date
Java 8 Date Time API 解决了上面的问题:
- 不可变: java8中的日期时间类是线程安全的。
- 关注度区分: 新的API区分了人类易读和机器易读(unix时间戳)的类。它定义了Date, Time, DateTime, Timestamp, Timezone 等等。
-
更清晰: 所有类中的方法定义都更加一目了然。比如获取当前时间可以使用
now()
方法。而且所有类都有 format() 和parse() 而不再须有单独的类。所有类在编写上都使用了工厂模式和策略模式,只要会用一个类,其他的用法都一样。
- 工具操作: 所有的类都可以加、减、格式化、解析、分别获取日期和时间。
Java 8 Date 包
Java 8 Date Time API 有这几个包:
-
java.time 包: 这个是基包。下面有
LocalDate
,LocalTime
,LocalDateTime
,Instant
,Period
,Duration等。他们都是不可变类,和String一样。一般我们使用这个包的类就够了。
-
java.time.chrono 包: 这个包是给非标准ISO日历系统定义的通用类。可以继承
AbstractChronology
来创建自己的日历系统。 - java.time.format 包: 这个包下面是格式化和解析类。一般我们不用直接用这里面的类,因为基包里的类就包含了转换方法。
- java.time.temporal 包: 这个包下面的时间对象一般用来生成特定的日期。比如某月的第一天或最后一天。里面的方法都很好识别,都是用with开头的。
- java.time.zone 包: 这个包是时区支持。
请到后续文章查看用法。
相关推荐
9. **版本控制**:redmine-java-api-master可能表示这是该项目的主分支,意味着它是最新的、未发布的开发版本,可能存在不稳定因素。 10. **文档和示例**:一个完善的API不仅要有功能完备的代码,还应提供清晰的...
6. **日期和时间API**:Java 8的`java.time`包替换掉了原有的`java.util.Date`和`Calendar`,提供了更加易用且功能丰富的日期和时间API,如`LocalDate`, `LocalTime`, `LocalDateTime`等。 7. **默认方法**:在接口...
这份"Java8-API-中文文档-完整版"是学习和理解这些新特性的宝贵资源,它涵盖了Java 8的全貌,包括核心库、语言特性和API改进。 1. **函数式编程**: - **Lambda表达式**:Java 8引入了lambda表达式,使得编写简洁...
3. **新日期时间API**:在Java 8中,`java.time`包取代了旧的`java.util.Date`和`java.util.Calendar`,提供了更为直观和强大的日期时间处理功能。`LocalDate`, `LocalTime`, `LocalDateTime`, `ZonedDateTime`等类...
5. **日期和时间API**: Java 8引入了`java.time`包,提供`LocalDate`、`LocalTime`、`LocalDateTime`等类,替代了原有的`java.util.Date`和`Calendar`,使日期和时间的操作更加直观。 **模块系统(Project Jigsaw)...
在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`这些文件对于构建基于Java的Web应用程序至关重要,它们提供了与Web服务器通信和处理用户请求的核心功能,同时也支持高效...
在提供的压缩包子文件名称中,我们有两个文件: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可能是实现...
5. **Date和Time API的改进**:Java 8引入了全新的日期和时间API(java.time包),替代了旧的java.util.Date和Calendar,提供了更好的日期、时间、时区处理功能。 6. **接口的默认方法**:接口可以定义带有实现的...
流API是Java 8中另一个重要特性,它为处理集合提供了新的途径。流可以看作是从数据源(集合、数组等)生成的一系列元素序列,支持过滤、映射、聚合等操作。例如,`list.stream().filter(s -> s.length() > 3)....
5. **日期和时间API**:Java 8改进了日期和时间的处理,引入了`java.time`包,提供了`LocalDate`、`LocalTime`、`LocalDateTime`等类,替代了之前易用性较差的`java.util.Date`和`java.util.Calendar`。 6. **并发...
10. **Stream API**:也是Java 8的一个重要特性,提供了对集合、数组等数据结构进行高效操作的API,支持并行处理和函数式编程风格。 Java API文档是学习和查阅Java技术的宝典,无论你是初学者还是资深开发者,都...
`google-api-java-client`是Google官方提供的一款用于与Google API交互的Java库,它使得Java开发者能够方便地访问Google的各种服务,如Drive、Calendar、Gmail等。这个库是开源项目,遵循Apache 2.0许可证,允许自由...
java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。 java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text ...
- **日期和时间API**:Java 8更新了日期和时间处理的API,引入了`java.time`包,替代了过时的`java.util.Date`和`java.util.Calendar`。 - **方法引用**:允许直接引用一个类的方法,而无需创建匿名函数。 - **...
`java.util`提供了一组通用的数据结构和算法,如集合框架、日期和时间处理。`java.io`则涉及输入/输出操作,包括文件读写、流处理等。 2. **集合框架**:Java API 6u30中的集合框架是一个强大的工具,它允许开发者...
下面我们将深入探讨Java 8 API中的核心变化和重要特性。 1. **Lambda表达式** Lambda表达式是Java 8最显著的特性之一,它允许以简洁的方式定义匿名函数。这种语法使得代码更加简洁,特别是处理函数式编程场景时,...
**Date和Time API** 的重大改革,如`java.time`包,提供了更加直观和强大日期时间处理功能,取代了传统的`java.util.Date`和`java.util.Calendar`。 3. **泛型**:Java 8继续支持泛型,它允许在类、接口和方法中...
Commons Lang提供了一些Java语言核心类的补充,包括字符串处理、日期和时间操作、数学计算等。`Commons-lang-2.2-API.chm`文档覆盖了这些实用工具类,使得开发者可以更高效地处理常见的编程任务。 4. **Commons ...
3. **新的日期和时间API**:Java 8提供了新的java.time包,替代了旧的Calendar和Date API,提供了更直观、更易用的时间日期处理功能。 4. **Stream API**:这是一个用于处理集合的新API,提供了序列化操作的方式,...