java8 LocalDateTime

说明

处理 年月日 时分秒的类,相当于 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);

原文出处:/show_1IX35cXoClfo.html