JDK8以后新提供了几类时间相关的操作类,极大的方便和简化了对时间日期相关的操作:
1.LocalDate 表示日期(年月日)
2.LocalTime 表示时间(时分秒)
3.LocalDateTime 表示日期+时间 (年月日时分秒)
1.获取当前时间对象
public class dateTest01 {
public static void main(String[] args) {
// 获取当前年月日时间
LocalDate nowdate = LocalDate.now();
// 获取当前时间时分秒
LocalTime nowTime = LocalTime.now();
//获取当前时间年月日时分秒
LocalDateTime now = LocalDateTime.now();
//获取具体时间
LocalDateTime of = LocalDateTime.of(2022, 6, 26, 21, 45, 50);
System.out.println(nowdate);
System.out.println(nowTime);
System.out.println(now);
System.out.println(of);
}
}
运行结果如下:
2022-06-26
13:47:51.528
2022-06-26T13:47:51.528
2022-06-26T21:45:50
2.获取时间中的具体值(年月日星期几等)
public class DateTime02 {
public static void main(String[] args) {
//获取具体时间
LocalDateTime now = LocalDateTime.now();
//获取年份
int year = now.getYear();
//获取月份
int monthValue = now.getMonthValue();
//获取几号
int dayOfMonth = now.getDayOfMonth();
//获取一年中第几天
int dayOfYear = now.getDayOfYear();
//获取星期几
DayOfWeek dayOfWeek = now.getDayOfWeek();
//时
int hour = now.getHour();
//分
int minute = now.getMinute();
//秒
int second = now.getSecond();
System.out.println("具体时间:" + now);
System.out.println("获取年份:" + year);
System.out.println("获取月份:" + monthValue);
System.out.println("获取几号:" + dayOfMonth);
System.out.println("获取一年中第几天:" + dayOfYear);
System.out.println("获取星期几:" + dayOfWeek);
System.out.println("时:" + hour);
System.out.println("分:" + minute);
System.out.println("秒:" + second);
}
}
运行结果如下:
具体时间:2022-06-26T13:53:54.890
获取年份:2022
获取月份:6
获取几号:26
获取一年中第几天:177
获取星期几:SUNDAY
时:13
分:53
秒:54
3.日期格式之间的转换
public class Datetime03 {
public static void main(String[] args) {
//获取具体时间
LocalDateTime of = LocalDateTime.now();
//转换为日月年
LocalDate localDate = of.toLocalDate();
//转换为时分秒
LocalTime localTime = of.toLocalTime();
System.out.println("当前具体时间:" + of);
System.out.println("当前时间年月日:" + localDate);
System.out.println("当前时间时分秒:" + localTime);
}
}
运行结果如下:
当前具体时间:2022-06-26T13:57:18.812
当前时间年月日:2022-06-26
当前时间时分秒:13:57:18.812
4.日期与字符串之间的转换
public class DateTime04 {
public static void main(String[] args) {
//获取具体时间
LocalDateTime of = LocalDateTime.now();
//定义字符串格式
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");
//格式化时间为字符串
String format = of.format(dateTimeFormatter);
//定义时间戳格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");
//格式化字符串为时间戳
LocalDateTime parse = LocalDateTime.parse(format, formatter);
System.out.println("当前时间格式化为字符串:" + format);
System.out.println("当前时间的字符串格式化为Localdatetime格式:" + parse);
}
}
运行结果如下:
当前时间格式化为字符串:2022-06-26 14-05-48
当前时间的字符串格式化为Localdatetime格式:2022-06-26T14:05:48
5.时间增减,plus和minus系列方法
public class DateTime05 {
public static void main(String[] args) {
//获取具体时间
LocalDateTime of = LocalDateTime.now();
//时间年份+1 或者-1
LocalDateTime localDateTime = of.plusYears(1);
LocalDateTime localDateTime1 = of.plusYears(-1);
LocalDateTime localDateTime2 = of.plusDays(1);
//时间年份-1 或者+1
LocalDateTime localDateTime3 = of.minusYears(1);
LocalDateTime localDateTime4 = of.minusYears(-1);
LocalDateTime localDateTime5 = of.minusDays(1);
System.out.println(localDateTime);
System.out.println(localDateTime1);
System.out.println(localDateTime2);
System.out.println(localDateTime3);
System.out.println(localDateTime4);
System.out.println(localDateTime5);
}
}
运行结果如下:
2023-06-26T14:12:07.466
2021-06-26T14:12:07.466
2022-06-27T14:12:07.466
2021-06-26T14:12:07.466
2023-06-26T14:12:07.466
2022-06-25T14:12:07.466
6.直接修改年月日时分秒,with系列方法
public class DateTime06 {
public static void main(String[] args) {
//获取具体时间
LocalDateTime of = LocalDateTime.now();
//直接分别修改年月日
LocalDateTime localDateTime = of.withYear(2022);
LocalDateTime localDateTime1 = of.withMonth(5);
LocalDateTime localDateTime2 = of.withDayOfMonth(20);
System.out.println(localDateTime);
System.out.println(localDateTime1);
System.out.println(localDateTime2);
}
}
运行结果如下:
2022-06-26T14:16:09.522
2022-05-26T14:16:09.522
2022-06-20T14:16:09.522
7.计算两时刻直接的差值
public class DateTime07 {
public static void main(String[] args) {
//获取具体时间
LocalDate of1 = LocalDate.of(2022, 4, 4);
LocalDate of2 = LocalDate.of(2025, 12, 12);
//计算两个时间的间隔(*LocalDate类型参数)
Period between = Period.between(of1, of2);
//获取时间段的年数
int years = between.getYears();
//获取时间段的月数
int months = between.getMonths();
//获取时间段的天数
int days = between.getDays();
//获取时间段内总共的月数
long l = between.toTotalMonths();
System.out.println(years);
System.out.println(months);
System.out.println(days);
System.out.println(l);//44
}
}
运行结果如下:
3
8
8
44