Date-Time API中的所有类均生成不可变实例,它们是线程安全的;之前的Date对象和Calendar对象存在线程不安全的情况。所以在开发过程中使用Date-Time下的类实现时间相关操作。
@Test
void contextLoads() {
//直接获取当前时间
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("默认获取的时间-> " + localDateTime);
//根据时钟获取当前时间
LocalDateTime clockDefaultNow = LocalDateTime.now(Clock.systemDefaultZone());
System.out.println("根据时钟获取当前时间-> " + clockDefaultNow);
//根据时区获取当前时间
LocalDateTime zoneDefaultNow = LocalDateTime.now(ZoneId.systemDefault());
System.out.println("根据时区获取当前时间-> " + zoneDefaultNow);
}
//输出结果
//默认获取的时间-> 2023-12-15T10:46:15.671467300
//根据时钟获取当前时间-> 2023-12-15T10:46:15.672465800
//根据时区获取当前时间-> 2023-12-15T10:46:15.673463800
@Test
void contextLoads() {
//直接获取当前时间
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("默认获取的时间" + localDateTime);
String format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> " + format);
String format1 = localDateTime.format(DateTimeFormatter.ofPattern("yyyyMMdd HHmmss"));
System.out.println("格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> " + format1);
//可以将LocalDateTime转化为只要年份的字符串
String format3 = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> " + format3);
//可以将LocalDateTime转化为只要时间的字符串
String format4 = localDateTime.format(DateTimeFormatter.ofPattern("HH:mm:ss"));
System.out.println("格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> " + format4);
}
// 输出结果
// 默认获取的时间2023-12-15T10:53:54.704295700
// 格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> 2023-12-15 10:53:54
// 格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> 20231215 105354
// 格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> 2023-12-15
// 格式化为`yyyy-MM-dd HH:mm:ss`格式后的时间-> 10:53:54
@Test
void contextLoads() {
//根据年,月,日,时,分获取LocalDateTime
LocalDateTime localDateTime1 = LocalDateTime.of(2023, 12, 15, 11, 2);
System.out.println("根据年,月,日,时,分获取时间-> " + localDateTime1);
//根据年,月,日,时,分,秒获取LocalDateTime
LocalDateTime localDateTime2 = LocalDateTime.of(2023, 12, 15, 11, 2,2);
System.out.println("根据年,月,日,时,分,秒获取时间-> " + localDateTime2);
//根据年,月,日,时,分,秒,纳秒获取LocalDateTime
LocalDateTime localDateTime3 = LocalDateTime.of(2023, 12, 15, 11, 2,2,999);
System.out.println("根据年,月,日,时,分,秒,纳秒获取时间-> " + localDateTime3);
//根据年,Month月,日,时,分获取LocalDateTime
LocalDateTime localDateTime4 = LocalDateTime.of(2023, Month.DECEMBER, 15, 11, 2);
System.out.println("根据年,Month月,日,时,分获取时间-> " + localDateTime4);
//根据LocalDate,LocalTime获取LocalDateTime
LocalDateTime localDateTime5 = LocalDateTime.of(LocalDate.now(),LocalTime.now());
System.out.println("根据LocalDate,LocalTime获取时间-> " + localDateTime5);
}
// 输出结果
// 根据年,月,日,时,分获取时间-> 2023-12-15T11:02
// 根据年,月,日,时,分,秒获取时间-> 2023-12-15T11:02:02
// 根据年,月,日,时,分,秒,纳秒获取时间-> 2023-12-15T11:02:02.000000999
// 根据年,Month月,日,时,分获取时间-> 2023-12-15T11:02
// 根据LocalDate,LocalTime获取时间-> 2023-12-15T11:17:11.865127800
@Test
void contextLoads() {
//将字符串转为LocalDateTime
LocalDateTime localDateTime1 = LocalDateTime.parse("2023-12-15T12:12:12");
System.out.println("将字符串转为LocalDateTime-> " + localDateTime1);
//将字符串转为指定格式的LocalDateTime,这里注意,时间字符串要与指定的格式匹配
LocalDateTime localDateTime2 = LocalDateTime.parse("2023/12/15 10:46:15",DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"));
System.out.println("将字符串转为指定格式的LocalDateTime-> " + localDateTime2);
}
// 输出结果
// 将字符串转为LocalDateTime-> 2023-12-15T12:12:12
// 将字符串转为指定格式的LocalDateTime-> 2023-12-15T10:46:15
@Test
void contextLoads() {
LocalDateTime localDateTime6 = LocalDateTime.ofInstant(Instant.now(),ZoneId.systemDefault());
System.out.println("localDateTime6-> " + localDateTime6);
String format = localDateTime6.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("格式化后的时间-> " + format);
}
// 输出结果
// localDateTime6-> 2023-12-15T13:44:09.088143900
// 格式化后的时间-> 2023-12-15 13:44:090
@Test
void contextLoads() {
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("当前时间-> " + localDateTime);
//获取指定天后的时间
LocalDateTime localDateTime1 = localDateTime.plusDays(2);
System.out.println("获取指定天后的时间-> " + localDateTime1);
//获取指定小时后的时间
LocalDateTime localDateTime2 = localDateTime.plusHours(2);
System.out.println("获取指定小时后的时间-> " + localDateTime2);
//获取指定分钟后的时间
LocalDateTime localDateTime3 = localDateTime.plusMinutes(2);
System.out.println("获取指定分钟后的时间-> " + localDateTime3);
//获取指定月后的时间
LocalDateTime localDateTime4 = localDateTime.plusMonths(2);
System.out.println("获取指定月后的时间-> " + localDateTime4);
//获取指定纳秒后的时间
LocalDateTime localDateTime5 = localDateTime.plusNanos(50);
System.out.println("获取指定纳秒后的时间-> " + localDateTime5);
//获取指定秒后的时间
LocalDateTime localDateTime6 = localDateTime.plusSeconds(50);
System.out.println("获取指定秒后的时间-> " + localDateTime6);
//获取指定周后的时间
LocalDateTime localDateTime7 = localDateTime.plusWeeks(2);
System.out.println("获取指定周后的时间-> " + localDateTime7);
//获取指定年后的时间
LocalDateTime localDateTime8 = localDateTime.plusYears(2);
System.out.println("获取指定年后的时间-> " + localDateTime8);
}
// 输出结果
// 当前时间-> 2023-12-15T11:41:55.924123200
// 获取指定天后的时间-> 2023-12-17T11:41:55.924123200
// 获取指定小时后的时间-> 2023-12-15T13:41:55.924123200
// 获取指定分钟后的时间-> 2023-12-15T11:43:55.924123200
// 获取指定月后的时间-> 2024-02-15T11:41:55.924123200
// 获取指定纳秒后的时间-> 2023-12-15T11:41:55.924123250
// 获取指定秒后的时间-> 2023-12-15T11:42:45.924123200
// 获取指定周后的时间-> 2023-12-29T11:41:55.924123200
// 获取指定年后的时间-> 2025-12-15T11:41:55.924123200
@Test
void contextLoads() {
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("当前时间为-> " + localDateTime);
//获取两天前的时间
LocalDateTime localDateTime1 = localDateTime.minusDays(2);
System.out.println("获取两天前的时间-> " + localDateTime1);
//获取两小时前的时间
LocalDateTime localDateTime2 = localDateTime.minusHours(2);
System.out.println("获取两小时前的时间-> " + localDateTime2);
//获取两分钟前的时间
LocalDateTime localDateTime3 = localDateTime.minusMinutes(2);
System.out.println("获取两分钟前的时间-> " + localDateTime3);
//获取两月前的时间
LocalDateTime localDateTime4 = localDateTime.minusMonths(2);
System.out.println("获取两月前的时间-> " + localDateTime4);
//获取两纳秒前的时间
LocalDateTime localDateTime5 = localDateTime.minusNanos(2);
System.out.println("获取两纳秒前的时间-> " + localDateTime5);
//获取两秒前的时间
LocalDateTime localDateTime6 = localDateTime.minusSeconds(2);
System.out.println("获取两秒前的时间-> " + localDateTime6);
//获取两周前的时间
LocalDateTime localDateTime7 = localDateTime.minusWeeks(2);
System.out.println("获取两周前的时间-> " + localDateTime7);
//获取两年前的时间
LocalDateTime localDateTime8 = localDateTime.minusYears(2);
System.out.println("获取两年前的时间-> " + localDateTime8);
}
// 输出结果
// 当前时间为-> 2023-12-15T13:58:26.434874200
// 获取两天前的时间-> 2023-12-13T13:58:26.434874200
// 获取两小时前的时间-> 2023-12-15T11:58:26.434874200
// 获取两分钟前的时间-> 2023-12-15T13:56:26.434874200
// 获取两月前的时间-> 2023-10-15T13:58:26.434874200
// 获取两纳秒前的时间-> 2023-12-15T13:58:26.434874198
// 获取两秒前的时间-> 2023-12-15T13:58:24.434874200
// 获取两周前的时间-> 2023-12-01T13:58:26.434874200
// 获取两年前的时间-> 2021-12-15T13:58:26.434874200
@Test
void contextLoads() {
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("当前时间为-> " + localDateTime);
LocalDateTime localDateTimePlus = localDateTime.plusHours(1);
LocalDateTime localDateTimeMinus = localDateTimePlus.minusHours(1);
int i = localDateTime.compareTo(localDateTime);
System.out.println("与自己比较的结果-> " + i);
int i1 = localDateTime.compareTo(localDateTimePlus);
System.out.println("与之后一小时时间比较的结果-> " + i1);
int i2 = localDateTime.compareTo(localDateTimeMinus);
System.out.println("与之前一小时时间比较的结果-> " + i2);
}
// 输出结果
// 当前时间为-> 2023-12-15T14:04:32.157731400
// 与自己比较的结果-> 0
// 与之后一小时时间比较的结果-> -1
// 与之前一小时时间比较的结果-> 0
9:获取LocalDateTime的具体信息
@Test
void contextLoads() {
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("当前时间为-> " + localDateTime);
int dayOfMonth = localDateTime.getDayOfMonth();
System.out.println("dayOfMonth -> " + dayOfMonth);
DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
System.out.println("dayOfWeek -> " + dayOfWeek);
int dayOfYear = localDateTime.getDayOfYear();
System.out.println("dayOfYear -> " + dayOfYear);
int hour = localDateTime.getHour();
System.out.println("hour -> " + hour);
int year = localDateTime.getYear();
System.out.println("year -> " + year);
Month month = localDateTime.getMonth();
System.out.println("month -> " + month);
}
// 输出结果
// dayOfMonth -> 15
// dayOfWeek -> FRIDAY
// dayOfYear -> 349
// hour -> 14
// year -> 2023
// month -> DECEMBER
目前只用到了一部分,剩余方法可查看jdk文档火球