日常开发中, 我们会经常遇到时间的运算, 操作, 格式化等, 本文主要讲述LocalTime
的常用时间操作.
简介
LocalTime
是JDK8以后的 Api
, 主要功能时 分 秒 微秒
的相关计算, 比如当前时间加多少小时是几点, 减多少小时是几点.......
常用 Api
1 获取时间对象信息
// 本地当前时间, 时间对象 (不可变的对象)
LocalTime lt = LocalTime.now(); // 时 分 秒 纳秒
System.out.println(lt); // 14:49:40.992546000
// 获取时间对象信息
int hour = lt.getHour(); // 时
int minute = lt.getMinute(); // 分
int second = lt.getSecond(); // 秒
int nano = lt.getNano(); // 纳秒
System.out.println(hour); // 14
System.out.println(minute); // 49
System.out.println(second); // 40
System.out.println(nano); // 992546000
2 直接修改日期对象信息
// 直接修改时间:withHour、withMinute、withSecond、withNano
LocalTime lt3 = lt.withHour(2);
LocalTime lt4 = lt.withMinute(10);
LocalTime lt5 = lt.withSecond(10);
LocalTime lt6 = lt.withNano(50);
System.out.println(lt3); // 02:49:40.992546000
System.out.println(lt4); // 14:10:40.992546000
System.out.println(lt5); // 14:49:10.992546000
System.out.println(lt6); // 14:49:40.000000050
System.out.println(lt); // 14:49:40.992546000
3 时间运算: 加 / 减
- 1 加法
// 加多少:plusHours、plusMinutes、plusSeconds、plusNanos
LocalTime lt7 = lt.plusHours(10);
LocalTime lt8 = lt.plusMinutes(10);
LocalTime lt9 = lt.plusSeconds(10);
LocalTime lt10 = lt.plusNanos(10);
System.out.println(lt7); // 00:49:40.992546000
System.out.println(lt8); // 14:59:40.992546000
System.out.println(lt9); // 14:49:50.992546000
System.out.println(lt10); // 14:49:40.992546010
System.out.println(lt); // 14:49:40.992546000
- 2 减法
// 减多少:minusHours、minusMinutes、minusSeconds、minusNanos
LocalTime lt11 = lt.minusHours(10);
LocalTime lt12 = lt.minusMinutes(10);
LocalTime lt13 = lt.minusSeconds(10);
LocalTime lt14 = lt.minusNanos(10);
System.out.println(lt11); // 04:49:40.992546000
System.out.println(lt12); // 14:39:40.992546000
System.out.println(lt13); // 14:49:30.992546000
System.out.println(lt14); // 14:49:40.992545990
System.out.println(lt); // 14:49:40.992546000
4 获取指定时间的的 LocalTime 对象
// public static LocalTime of(int hour, int minute, int second)
LocalTime lt15 = LocalTime.of(12, 12, 12);
LocalTime lt16 = LocalTime.of(12, 12, 12);
System.out.println(lt13); // 12:12:12
System.out.println(lt16); // 12:12:12
5 判断2个时间的早晚
System.out.println(lt15.equals(lt16)); // true 同一时间
System.out.println(lt15.isAfter(lt)); // false lt15 不在 lt 之后
System.out.println(lt15.isBefore(lt)); // true lt15 在 lt 之前
6 格式化
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH-mm-ss");
// 时间 转 String
LocalTime time = LocalTime.of(18, 17, 55);
String result = time.format(dtf);
System.out.println(result); // 18-17-55
// String 转 时间对象, 特殊格式
String timeStr = "15-10-58";
LocalTime time1 = LocalTime.parse(timeStr, dtf);
System.out.println(time1); // 15:10:58
// String 转 时间对象, 默认格式: "HH:mm:ss"
LocalTime time2 = LocalTime.parse("13:22:33");
System.out.println(time2); // 13:22:33