提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
LocalDateTime类和DateTimeFormatter类的使用
前言
在Java基础学习中,要获取当前的时间,以及按照格式化来打印,这个时候我们就要使用我们的LocalDateTime类来获取当前的时间,用DateTimeFormatter类来控制LocalDateTime类的对象打印的格式。
一、如何得到格式化的时间
1.如何获取当前的时间
LocalDateTime time = LocalDateTime.now();// 获取当前时间
System.out.println(time);// 输出结果为 2023-07-12T17:17:33.518178400
观察上面的代码,可以发现部分时间是与电脑时间对应的,但是这不是我们通常看到的形式,所以我们要将这个time对象进行格式化。
2.如何将时间格式
我们来使用DateTimeFormatter类来实现。
LocalDateTime time = LocalDateTime.now();// 获取当前时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd EEEE ahh:mm");// 时间的格式化输出
String s = time.format(formatter);// 用变为string类型
System.out.println(s);// 2023/07/12 星期三 下午05:28
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd E HH:mm");// 我们将它的形式改变后
System.out.println(time.format(formatter));// 2023-07-12 周三 17:28
/*
yyyy年份
MM 月份
dd 日期
a 上下午
HH 24小时制 hh 12小时制
mm 分钟
ss 秒
EEEE 星期几
E 周几
*/
这样我们就得到了我们常见时间的形式,上面的注释中是不同字符串,导致显示结果的不同。
3.如何自定义时间
LocalDateTime startTime = LocalDateTime.of(2022, 3, 25, 9, 4);// 自定义时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd EEEE ahh:mm");// 时间的格式化输出
System.out.println(startTime.format(formatter));// 2022-03-25 周五 10:23
我将时间按照上面的方式,就可以创建自定义的时间。
二、时间方面的计算
1.计算当前时间与自定义时间的时间差
代码如下(示例):
LocalDateTime startTime = LocalDateTime.of(2022, 3, 25, 10, 23);// 自定义时间
LocalDateTime endTime = LocalDateTime.now();// 当前时间
long days = ChronoUnit.DAYS.between(startTime, endTime); // 两个时间的天数差
long years = ChronoUnit.YEARS.between(startTime, endTime); // 两个时间的年数差
long hours = ChronoUnit.HOURS.between(startTime, endTime); // 两个时间的小时差
long minutes = ChronoUnit.MINUTES.between(startTime, endTime); // 两个时间的分钟差
long weeks = ChronoUnit.WEEKS.between(startTime, endTime); // 两个时间的周数差
long months = ChronoUnit.MONTHS.between(startTime, endTime); // 两个时间的月数差
System.out.println();// 打印省略
注意:这个计算结果是用long类型来存储。
2.时间的比较
LocalDateTime birthday = LocalDateTime.of(2002, 3, 17, 0, 0);
LocalDateTime nowTime = LocalDateTime.now();// 当前时间
int nowTimeMonthValue = nowTime.getMonthValue(); // 获取当前时间的月数
int nowTimeDayOfMonth = nowTime.getDayOfMonth(); // 获取当前时间的天数
int birthdayMonthValue = birthday.getMonthValue(); // 同理获取自定义时间的月数
int birthdayDayOfMonth = birthday.getDayOfMonth(); // 同理获取自定义时间的月数
// 接下来就是int类型的比较
3.判断时间是否在规定时间内
// 判断时间是否在规定时间内
LocalDateTime nowTime = LocalDateTime.now(); // 获取当前时间
// 设置规定时间的开始时间和结束时间
LocalDateTime startDate = LocalDateTime.of(2023,7,1,0,0);
LocalDateTime endDate = LocalDateTime.of(2023,7,20,0,0);
// isAfter(xx)判断时间是否在xx时间之后 isBefore(xx)判断时间是否在xx时间之前
// 这两个方法的返回值是boolean类型,满足条件返回true,不满足返回false
boolean b = nowTime.isAfter(startDate) && nowTime.isBefore(endDate);
System.out.println(b); // true
4.设置在一定时间内才可以进行操作
// 假如设置一个15分钟内操作
int setTimeMinute = 15;
LocalDateTime orderDate = LocalDateTime.of(2023,7,7,8,7);
// plus方法用于在当前日期上添加一定的时间量,得到一个新的时间
// plus方法传两个参数,时间量和时间单位
// 时间量可以是任意整数值
// 时间单位是指ChronoUnit枚举中定义的单位,例如在时间计算中的,ChronoUnit.DAYS,ChronoUnit.YEARS等等
LocalDateTime deadline = orderDate.plus(setTimeMinute, ChronoUnit.MINUTES);
LocalDateTime nowTime = LocalDateTime.now();// 获取当前时间
if(nowTime.isAfter(deadline)){
System.out.println("操作时间已过");
}else{
// 操作代码
}
总结
这些仅仅只是时间的部分用法,要多练多写,这是我学习该内容的笔记