目录
接下来继续要学习的是JDK 8之后新增的代替SimpleDateFormat的一个API——DateTimeFormatter
同样是用来格式化和解析时间的,与SimpleDateFormat相比较来说,它是线程安全的,也就是多个用户进入到一个系统中,用户可以使用同一个DateTimeFormatter。
DateTimeFormatter
主要方法
方法名 | 说明 |
---|---|
public static DateTimeFormatter ofPattern(时间格式) | 获取格式化器对象 |
public String format(时间对象) | 格式化时间 |
LocalDateTime提供的格式化、解析时间的方法
方法名 | 说明 |
---|---|
public String format(DateTimeFormatter formatter) | 格式化时间 |
public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter) | 解析时间 |
用法示例
public class Test {
public static void main(String[] args){
//1.创建一个日期时间格式化器对象出来
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
//2.对时间进行格式化
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
String rs = formatter.format(now); //正向格式化
System.out.println(rs);
//3.格式化时间,还有另一种方案
String rs2 = now.format(formatter); //反向格式化
System.out.println(rs2);
//4.解析时间:解析时间一般使用LocalDateTime提供的解析方法来解析
String dateStr = "2029年12月12日 12:12:11";
LocalDateTime ldt = LocalDateTime.parse(dateStr,formatter);
System.out.println(ldt);
}
}
运行结果:
JDK 8 新增的有关时间的API还有两个补充的:Period、Duration。
Period
- 可以用于计算两个LocalDate对象相差的年数、月数、天数。
常见方法
方法名 | 说明 |
---|---|
public static Period between(LocalDate start, LocalDate end) | 传入2个日期对象,得到Period对象 |
public int getYears() | 计算隔几年,并返回 |
public int getMonths() | 计算隔几个月,年返回 |
public int getDays() | 计算隔多少天,并返回 |
用法示例
public class Test {
public static void main(String[] args){
LocalDate start = LocalDate.of(2029,8,10);
LocalDate end = LocalDate.of(2029,12,15);
//1.创建Period对象,封装两个日期对象
Period period = Period.between(start,end);
//2.通过Period对象获取两个日期对象相差的信息
System.out.println(period.getYears());
System.out.println(period.getMonths());
System.out.println(period.getDays());
}
}
运行结果:
Duration
- 可以用于计算两个时间对象相差的天数、小时数、分数、秒数、纳秒数;支持LocalTime、LocalDateTime、Instant等时间。
常见方法
方法名 | 说明 |
---|---|
publicstaticDuration between(开始时间对象1,截止时间对象2) | 传入2个时间对象,得到Duration对象 |
public long toDays() | 计算隔多少天,并返回 |
public long toHours() | 计算隔多少小时,并返回 |
public long toMinutes() | 计算隔多少分,并返回 |
public long toSeconds() | 计算隔多少秒,并返回 |
public long toMillis() | 计算隔多少毫秒,并返回 |
public long toNanos() | 计算隔多少纳秒,并返回 |
用法示例
public class Test {
public static void main(String[] args){
LocalDateTime start = LocalDateTime.of(2025,11,11,11,10,10);
LocalDateTime end = LocalDateTime.of(2025,11,11,11,11,11);
//1.得到Duration对象
Duration duration = Duration.between(start,end);
//2.获取两个时间对象间隔的信息
System.out.println(duration.toDays()); //间隔多少天
System.out.println(duration.toHours()); //间隔多少小时
System.out.println(duration.toMinutes()); //间隔多少分钟
System.out.println(duration.toSeconds()); //间隔多少秒
System.out.println(duration.toMillis()); //间隔多少毫秒
System.out.println(duration.toNanos()); //间隔多少纳秒
}
}
运行结果:
关于旧版与新增的时间相关API就全部学完啦~
下一篇开始学习Arrays这个工具类!
END
学习自:黑马程序员——JavaSE课程