:当地时间,不包括日期。
:组合日期和时间,但不包括时差和时区信息。
:最完整的日期时间,包括时区和相对于 UTC 或格林威治的偏移量。
新的API还引入了 和 类,可以更轻松地解决时区问题。解析和格式化时间
课程也被完全重新设计。
实战
在教程中,我们将通过一些简单的示例来学习如何使用新的API,因为只有在实际项目中使用它才是学习新知识和新技术的最快方法。
1.获取当前日期
在 Java 8 中用于表示今天的日期。 与 java.util.Date 不同,它仅包含日期,不包含时间。 当您只需要表示日期时使用此类。
50_1.png
上面的代码创建了今天的日期,没有时间信息。 打印日期的格式非常友好,不像Date类打印出一堆无格式信息。
2.获取年月日信息
提供获取年月日的快捷方法,其实例还包含许多其他日期属性。 通过调用这些方法,您可以轻松获取所需的日期信息,而无需依赖java.util。 和以前一样上课。
50_2.png3。 处理特定日期
在第一个示例中,我们通过静态工厂方法 now() 非常轻松地创建了今天的日期。
我们还可以调用另一个有用的工厂方法来创建任何日期。 该方法需要传入年、月、日作为参数,并返回对应的实例。 这种方法的好处是不会犯旧API的设计错误,比如从1900年开始的年份,从零开始的月份等等。所见即所得的日期,如示例下面显示的是 1 月 21 日,这很简单。
50_3.png4。 判断两个日期是否相等
现实生活中的一种时间处理是确定两个日期是否相等。 在项目开发过程中,总会遇到这样的问题。
下面的例子将帮助你用Java 8的方式来解决它,重载equal方法。
注意,如果比较的日期是字符类型,则需要将其解析为日期对象后再进行判断。
请看下面的例子:
50_4.png5。 检查生日等重复事件
Java中的另一种日期和时间处理是检查周期性事件,例如生日、周年纪念日、法定节假日(国庆节和春节),或者每月固定时间向客户发送电子邮件。
如何在Java中查看这些假期或其他周期性事件? 答案是上课。 该类结合了月份和日期并删除了年份,这意味着您可以使用它来确定事件是否每年都会发生。
还有一个类与这个类类似。 这些类也是不可变且线程安全的值类型。 下面我们通过以下方式检查周期性事件:
50_5.png6。 获取当前时间
与日期检索示例非常相似,时间检索使用一个类,一个只有时间但没有日期的近亲。 您可以调用静态工厂方法 now() 来获取当前时间。 默认格式是 .
50_6.png7。 在现有时间上添加小时数
Java 8提供了更好的()方法来替代add()并且兼容。 请注意,这些方法返回一个全新的实例。 由于其不可变性,变量必须在返回后赋值。
50_7.png8.如何计算一周后的日期
与上一个示例计算两小时后的时间类似,本示例将计算一周后的日期。 日期不包含时间信息。 它的 plus() 方法用于添加天、周和月。 该类声明了这些时间单位。 由于也是不可变类型,所以返回后必须使用变量来赋值。
您可以以同样的方式添加 1 个月、1 年、1 小时、1 分钟甚至一个世纪,有关更多选项,请查看 Java 8 API 中的类。
50_8.png9。 计算一年前或一年后的日期
接下来,在上面的示例中,我们使用该方法添加天数、周数或月数。 在这个例子中,我们使用该方法来计算一年前的日期。
50_9.png10.使用Java 8的Clock类
Java 8添加了一个Clock类来获取当前时区的当前时间戳或日期时间信息。 以前使用 .() 和 .() 的地方都可以用 Clock 替换。
50_10.png11。 确定一个日期是早于还是晚于另一个日期
该类有两个方法,用于比较日期。 调用该方法时,如果给定日期小于当前日期,则返回 true。
50_11.png12。 处理时区
Java 8不仅分隔日期和时间,还分隔时区。 现在有一系列单独的类,例如处理特定时区的类,以及表示时区时间的类。
50_12.png13.如何反映固定日期
例如: 表示固定日期,例如信用卡到期日期。 与检查重复事件的示例类似,是另一个组合类,用于表示信用卡到期日、FD 到期日、期货期权到期日等。
您还可以使用此类来获取当月的天数。 实例方法可以返回当月的天数,这在判断二月是28天还是29天时非常有用。
50_13.png14。 检查闰年
该类有一个非常实用的方法来确定实例是否是闰年。 如果您仍然想重新发明轮子,这里有一个代码示例,一个用纯 Java 逻辑编写的程序,用于确定闰年。
50_14.png15。 计算两个日期之间的天数和月数
常见的日期运算是计算两个日期之间的天数、周数或月数。 在 Java 8 中,您可以使用 java.time。 类进行计算。 在下面的示例中,我们计算今天和未来一天之间的月数。
下面的示例:现在是 1 月,现在是 5 月,中间有 3 个月。
50_15.png16。 日期和时间,包括时差信息
该类用于表示时区。 例如,印度与 GMT 或 UTC 标准时区的时差为 +05:30。 可以通过.of()静态方法获取对应的时区。 一旦有了时间差,您就可以通过传入总和来创建一个对象。
50_16.png17。 获取当前时间戳
该类有一个静态工厂方法 now() 返回当前时间戳,如下所示:
50_17.png18。 使用预定义的格式化工具来解析或格式化日期
Java 8 引入了一种新的日期和时间格式化工具,该工具是线程安全且易于使用的。 它附带了一些常用的内置格式化工具。
以下示例使用格式化工具格式化 10, 2018。
50_18.png终于
最后附上所有代码
总结
Java 8 日期时间 API 的亮点
1.提供javax.time。 获取时区。
2. 提供和上课。
3. Java 8中的所有日期和时间API都是不可变的和线程安全的,而API中现有的Date和java.util.Date不是线程安全的。
4、主要包是java.time,其中包含一些表示日期、时间和时间间隔的类。 有两个子包java.time。 用于格式化和java.time。 用于较低级别的操作。
5. 时区代表地球上某个地区常用的标准时间。 每个时区都有一个代号,其格式通常由地区/城市(亚洲/东京)加上与格林威治或 UTC 的时差组成。 例如:东京的时差是+09:00。