Java LocalTime 常用时间操作

257 阅读2分钟

日常开发中, 我们会经常遇到时间的运算, 操作, 格式化等, 本文主要讲述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