JAVA8新日期

简介: 在Java8之前,日期时间API一直被开发者诟病,包括:java.util.Date是可变类型,SimpleDateFormat非线程安全等问题。故此,Java8引入了一套全新的日期时间处理API,新的API基于ISO标准日历系统。在Java8之前,日期时间API一直被开发者诟病,包括:java.util.Date是可变类型,SimpleDateFormat非线程安全等问题。

Java8之前,日期时间API一直被开发者诟病,包括:java.util.Date是可变类型,SimpleDateFormat非线程安全等问题。故此,Java8引入了一套全新的日期时间处理API,新的API基于ISO标准日历系统。在Java8之前,日期时间API一直被开发者诟病,包括:java.util.Date是可变类型,SimpleDateFormat非线程安全等问题。

LocalDate、LocalTime、LocalDateTime

这三个类的实例是不可变的对象,分别表示日期,时间,日期和时间。它们提供了简单的日期或者时间,并不包含当前的时间是信息,也不包含与时区相关的信息。

通过这几个类我们在开发中可以很轻松的获取到年月日等信息。就不需要再使用SDF

LocalDate:常用方法

LocalDate.now();  获取系统当前时间,返回值还是LocalDate

LocalDate.of() : 获取指定的时间

getDayOfWeek() :获取今天是这周星期几(枚举类型) 如周四 :THURSDAY

getDayOfYear() :获取今天是今年的第几天

getDayOfMonth():获取今天是这个月的几号

getYear()       :获取年

getMonth()     : 获取月份对象(枚举) 如 :四月APRIL

getMonthValue() : 获取月的值

plusDays(n)   : 加N天

plusWeeks(n)  : 加N星期

plusMonths(n)  : 加N月

plusYears(n)    : 加N年

minusDays(n)  : 减n天

minusWeeks(n) : 减n周

minusMonths(n) :减n月

minusYears(n) : 减n年

Period period = Period.between(ld1,ld2); 获取两个日期之间的间隔

period.getDays();  获取两个日期相差的天数

period.getMonths(); 获取两个日期相差的月

period.getYears();  获取两个日期相差的年

LocalTime、LocalDateTime的常用方法与LocalDate一样,只不过是精确到天还是精确到小时秒的问题。

Instant

Instant : 时间戳(以Unix元年 1970年1月1日 00:00:00到某个时间毫秒值)

注意:是以本初子午线来计算的,我国时间是以北京时间计算,北京对于本初子午线属于东八区,我们需要转换

Instant.now() : 获取当前时间,已0°经线计算

now.atOffset()  : 获取偏移量时间

toEpochMilli() : 转成毫秒时间

Duration duration = Duration.between(instant1, instant2); 获取两个时间的间隔

duration.getSeconds() : 两个时间间隔的秒数

duration.toMillis()    : 两个时间间隔的毫秒数

duration.toDays()     : 两个时间间隔的天数

duration.toHours()    : 两个时间间隔的小时数

时间校正器

TemporalAdjuster (接口): 时间校正器

在实际工作中,我们对于时间的操作业务有很多,比如:将日期调整到下一个周日等操作

我们可以通过TemporalAdjusters 工具类进行操作

代码示例:将时间调整为下周一

日期格式化

DateTimeFormatter : 日期格式化类

日期格式化有默认的一些类型,但更多时候我们会用自定义的一些格式,比如yyyy-mm-dd等等

比如 : DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");

dtf.format(); 将日期转成字符串

dtf.parse() : 将字符串转成日期

从前面我们学到的关于日期的很多操作确实非常好,各种计算,各种操作等等,但是有时候我们还是需要转换成Date来进行使用。

Date 转 LocalDateTime

LocalDateTime 转Date

目录
相关文章
|
1天前
|
Java API 调度
Java 日期与时间处理:精准掌控时间流转
Java 8引入了全新的日期和时间API,解决了旧版`java.util.Date`和`Calendar`类设计不佳、操作繁琐的问题。新API包括`LocalDate`、`LocalTime`和`LocalDateTime`类,操作简洁直观,符合日常思维习惯。同时提供了`Period`和`Duration`处理时间间隔,以及`DateTimeFormatter`进行格式化输出。这些改进使开发者能更高效、准确地处理日期和时间,极大提升了开发效率与代码质量。 (239字符)
18 5
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
60 26
|
2月前
|
安全 Java API
告别SimpleDateFormat:Java 8日期时间API的最佳实践
在Java开发中,处理日期和时间是一个基本而重要的任务。传统的`SimpleDateFormat`类因其简单易用而被广泛采用,但它存在一些潜在的问题,尤其是在多线程环境下。本文将探讨`SimpleDateFormat`的局限性,并介绍Java 8引入的新的日期时间API,以及如何使用这些新工具来避免潜在的风险。
40 5
|
6月前
|
Java
Java基础之日期和时间
Java基础之日期和时间
40 1
|
7月前
|
安全 Java 程序员
Java8实战-新的日期和时间API
Java8实战-新的日期和时间API
53 3
|
3月前
|
Java API
Java的日期类都是怎么用的
【10月更文挑战第1天】本文介绍了 Java 中处理日期和时间的三个主要类:`java.util.Date`、`java.util.Calendar` 和 `java.time` 包下的新 API。`Date` 类用于表示精确到毫秒的瞬间,可通过时间戳创建或获取当前日期;`Calendar` 抽象类提供丰富的日期操作方法,如获取年月日及时区转换;`java.time` 包中的 `LocalDate`、`LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 等类则提供了更为现代和灵活的日期时间处理方式,支持时区和复杂的时间计算。
56 14
|
4月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
57 3
|
4月前
|
安全 Java API
时间日期API(Date,SimpleDateFormat,Calendar)+java8新增日期API (LocalTime,LocalDate,LocalDateTime)
这篇文章介绍了Java中处理日期和时间的API,包括旧的日期API(Date、SimpleDateFormat、Calendar)和Java 8引入的新日期API(LocalTime、LocalDate、LocalDateTime)。文章详细解释了这些类/接口的方法和用途,并通过代码示例展示了如何使用它们。此外,还讨论了新旧API的区别,新API的不可变性和线程安全性,以及它们提供的操作日期时间的灵活性和简洁性。
|
5月前
|
前端开发 JavaScript Java
【前端学java】java中的日期操作(13)
【8月更文挑战第10天】java中的日期操作
28 2
|
5月前
|
Java
比较两个日期是否相等Java
这篇文章提供了Java中比较两个日期是否相等的两种方法:使用`Calendar`类和`SimpleDateFormat`类来确定两个日期是否为同一天,并附有详细的代码示例和测试结果。