Java8新特性之日期时间API
前言
Java8引入了全新的日期时间API,取代了原有的java.util.Date
和java.util.Calendar
等日期时间处理工具类。这里将会简单介绍Java8日期时间API的新特性,以及如何使用这些API进行日期时间运算和格式化。
新特性
Java8日期时间API的新特性主要包括:
1. 时间计算的新API
Java8引入了全新的日期时间计算API,使用这些API能够方便地进行日期时间的加减、比较和格式化等操作。
2. ZonedDatetime
ZonedDateTime
是在Java8中新增的一个类,用于表示带有时区的日期时间信息。
3. 机器日期和时间
Java8引入了Instant
类,用于表示机器日期和时间,它能够准确表示Java程序正在执行的日期时间信息。
基本用法
创建日期时间对象
Java8提供了LocalDateTime
类、LocalDate
类和LocalTime
类,分别用于表示日期时间和时间。这些类的实例可以通过调用其静态工厂方法来创建。例如:
// 创建当前的日期
LocalDate currentDate = LocalDate.now();
// 创建指定的日期和时间
LocalDateTime dateTime = LocalDateTime.of(2019, 5, 28, 13, 32, 45);
// 创建当前的时间
LocalTime currentTime = LocalTime.now();
日期时间计算
Java8提供了丰富的日期时间运算方法,包括加减、比较、格式化等。例如:
// 计算两个日期之间的天数
LocalDate startDate = LocalDate.of(2018, 1, 1);
LocalDate endDate = LocalDate.of(2018, 6, 30);
long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
// 获取当前时间的小时数
LocalTime currentTime = LocalTime.now();
int hour = currentTime.getHour();
// 构造指定日期时间的时区对象
LocalDateTime dateTime = LocalDateTime.of(2019, 5, 28, 13, 32, 45);
ZoneId zoneId = ZoneId.of("Asia/Shanghai");
ZonedDateTime zonedDatetime = dateTime.atZone(zoneId);
日期时间格式化
Java8提供了DateTimeFormatter
类来实现日期时间格式化。例如:
// 创建日期格式化器
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
// 格式化日期时间
LocalDateTime dateTime = LocalDateTime.of(2019, 5, 28, 13, 32, 45);
String formattedDatetime = dateTime.format(formatter);
示例
示例1:计算两个日期之间的时间间隔
LocalDate startDate = LocalDate.of(2018, 1, 1);
LocalDate endDate = LocalDate.of(2018, 6, 30);
long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
System.out.println("两个日期相差天数:" + daysBetween);
输出结果:
两个日期相差天数:180
示例2:将日期时间格式化为指定格式
LocalDateTime dateTime = LocalDateTime.of(2019, 5, 28, 13, 32, 45);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDatetime = dateTime.format(formatter);
System.out.println("格式化后的日期时间:" + formattedDatetime);
输出结果:
格式化后的日期时间:2019-05-28 13:32:45
总结
Java8日期时间API是Java编程中必须掌握的重要组成部分,它提供了许多方便实用的日期时间计算和格式化等功能,能够大大提高编程效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java8新特性之日期时间API - Python技术站