说明
处理 年月日 时分秒的类,相当于 LocalDate + LocalTime
创建对象
当前日期时间
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);
指定日期时间
LocalDateTime.of(2020, 5, 20, 13, 14, 0);
或者
LocalDateTime.of(localDate, localTime);
获取年月日时分秒
System.out.println(localDateTime.getYear());
System.out.println(localDateTime.getMonthValue());
System.out.println(localDateTime.getDayOfMonth());
System.out.println(localDateTime.getHour());
System.out.println(localDateTime.getMinute());
System.out.println(localDateTime.getSecond());
获取LocalDate
LocalDate localDate = localDateTime.toLocalDate();
获取LocalTime
LocalTime localTime = localDateTime.toLocalTime();
格式化成字符串
通过 DateTimeFormatter 格式化
DateTimeFormatter是 线程安全 的,比 SimpleDateFormat 格式化时间更好
方式一
LocalDateTime dateTime=LocalDateTime.now();
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String str=dateTime.format(df);
System.out.println(str);
方式二
LocalDateTime dateTime=LocalDateTime.now();
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String str=df.format(dateTime);
System.out.println(str);
将字符串解析成对象
DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime=LocalDateTime.parse("2020-04-07 15:37:09",df);
System.out.println(dateTime);
时间计算
计算后,返回结果,原对象不变
加法
返回计算后的结果
// 下一小时
localTime.plusHours(1);
// 下一分钟
localTime.plusMinutes(1);
// 下一秒
localTime.plusSeconds(1);
减法
// 上一小时
localTime.minusHours(1);
// 上一分钟
localTime.minusMinutes(1);
// 上一秒
localTime.minusSeconds(1);
案例
LocalDateTime dateTime=LocalDateTime.now();
//返回计算后的结果
LocalDateTime res=dateTime.plusHours(1);
String s=res.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(s);
判断
// 是否相等
localdatetime.isEqual(localdatetime1);
// 是否早于
localdatetime.isBefore(localdatetime1);
// 是否晚于
localdatetime.isAfter(localdatetime1);
时间设置
返回新对象,原对象不变
LocalDateTime dateTime=LocalDateTime.now();
//设置0点
LocalDateTime res=dateTime.withHour(0);
DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String s=res.format(dtf);
//新对象改变
System.out.println(s);
//原对象不变
System.out.println(dateTime.format(dtf));
根据时间戳生成对象
long l = 1656595972911L;
ZoneId zi = ZoneId.of("GMT+8");
LocalDateTime ldt = Instant.ofEpochMilli(l).atZone(zi).toLocalDateTime();
System.out.println(ldt);