java8日期(Date,LocalDate,LocalTime,LocalDateTime),以及处理时间的方法

1.LocalDate(年月日)常用方法

1.1.1 当月最大时间 不包含时分秒
LocalDate lastday = date.with(TemporalAdjusters.lastDayOfMonth());
1.1.2 当月最小时间 不包含时分秒
   LocalDate firstday = date.with(TemporalAdjusters.firstDayOfMonth());

now

根据当前时间创建LocalDate对象

of

根据指定年月日创建LocalDate对象

getYear

获得年份

getMonthValue

获得月份

getMonth

获得月份枚举值

getDayOfMonth

获得月份天数(1-31)

getDayOfWeek

获得星期几

getDayOfYear

获得年份中的第几天(1-366)

lengthOfYear

获得当年总天数

lengthOfMonth

获得当月总天数

toEpochDay

与时间纪元(1970年1月1日)相差的天数

plusDays

加天

plusWeeks

加周

plusMonths

加月

plusYears

加年

minusDays

减年

minusWeeks

减周

minusMonths

减月

minusYears

减年

withYear

替换年份

withYear

替换年份

withDayOfMonth

替换日期

withDayOfYear

替换日期

isBefore

是否日期在之前

isAfter

是否日期在之后

isEqual

是否是当前日期

isleapYear

是否是闰年

1.1.3 代码示例(获取方法)
public void test(){
    //获取当前日期 2023-03-20
    System.out.println(LocalDate.now());
    //获取指定日期 2000-03-05
    System.out.println(LocalDate.of(2014, 3, 5));
    //获取日期的年份 2022
    System.out.println(LocalDate.now().getYear());
    //获取日期的月份 7
    System.out.println(LocalDate.now().getMonthValue());
    //获取日期的日子 7
    System.out.println(LocalDate.now().getDayOfMonth());
    //获取日期的星期 THURSDAY
    System.out.println(LocalDate.now().getDayOfWeek());
    //当天所在这一年的第几天 188
    System.out.println(LocalDate.now().getDayOfYear());
    //获取当年天数 365
    System.out.println(LocalDate.now().lengthOfYear());
    //获取当月天数 31
    System.out.println(LocalDate.now().lengthOfMonth());
    //与时间纪元(1970年1月1日)相差的天数,负数表示在时间纪元之前多少天 19180
    System.out.println(LocalDate.now().toEpochDay());
}
1.1.4 代码示例(运算方法)
public void test(){
    //加一天
    System.out.println("加1天:" + LocalDate.now().plusDays(1));
    //加一周
    System.out.println("加1周:" + LocalDate.now().plusWeeks(1));
    //加一月
    System.out.println("加1月:" + LocalDate.now().plusMonths(1));
    //加一年
    System.out.println("加1年:" + LocalDate.now().plusYears(1));
    //减一天
    System.out.println("减1天:" + LocalDate.now().minusDays(1));
    //减一周
    System.out.println("减1周:" + LocalDate.now().minusWeeks(1));
    //减一月
    System.out.println("减1月:" + LocalDate.now().minusMonths(1));
    //减一年
    System.out.println("减1年:" + LocalDate.now().minusYears(1));
}
1.1.5 代码示例 (替换方法)
public void test(){
    //(1)替换年份:2000-07-07
    System.out.println("替换年份为2000:" + LocalDate.now().withYear(2000));
    //(2)替换月份:2020-01-07
    System.out.println("替换月份为1:" + LocalDate.now().withMonth(1));
    //(3)替换日子:2020-07-01
    System.out.println("替换日期为1:" + LocalDate.now().withDayOfMonth(1));
    //(4)替换天数:一年中的第多少天
    System.out.println("替换天数为1:" + LocalDate.now().withDayOfYear(1));
}
1.1.6 代码示例(比较方法)
public void test(){
    //是否在当天之前
    System.out.println("是否在当天之前:" + LocalDate.now().minusDays(1).isBefore(LocalDate.now()));
    //是否在当天之后
    System.out.println("是否在当天之后:" + LocalDate.now().plusDays(1).isAfter(LocalDate.now()));
    //是否在当天
    System.out.println("是否在当天:" + LocalDate.now().isEqual(LocalDate.now()));
    //是否是闰年
    System.out.println("今年是否是闰年:" + LocalDate.now().isLeapYear());
}
1.2.1 LocalDate 与 String 之间的转换
//字符串转换为LocalDate
LocalDate localdate = LocalDate.parse("2023-03-20");
System.out.println(localdate);
//使用特定格式化(yyyy-MM-dd)从字符串获取LocalDate实例
String str = "2023-03-20";
DateTimeFormatter fmt1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date = LocalDate.parse(str, fmt1);
System.out.println(date);
//使用特定格式化形式(yyyy/MM/dd)将LocalDate转为字符串
LocalDate today = LocalDate.now();
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String dateStr = today.format(fmt);
System.out.println(dateStr);
1.2.2日期格式化的全部格式
 public static String YYYY = "yyyy";

 public static String YYYY_MM = "yyyy-MM";

 public static String YYYY_MM_DD = "yyyy-MM-dd";

 public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";

 public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";

 private static String[] parsePatterns = {
        "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
        "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
        "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
1.2.3LocalDate 与 Date之间的转换
//LocalDate转化为Date
ZonedDateTime zonedDateTime = LocalDate.now().atStartOfDay(ZoneId.systemDefault());
Date date = Date.from(zonedDateTime.toInstant());
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date));
//Date转化为LocalDate
LocalDate localDate = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println(localDate.format(DateTimeFormatter.ISO_LOCAL_DATE));

2. LocalDateTime(年月日时分秒)用法

2.1.1 获得某天最大时间
 /**
     * 获得某天最大时间 2022-11-11 23:59:59
     * @param date
     * @return
     */
    public static Date getEndOfDay(Date date) {

        if (date == null) date = new Date();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());;
        LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);
        return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
    }
2.1.2 获得某天最小时间
 /**
     * 获得某天最小时间 2022-11-11 00:00:00
     * @param date
     * @return
     */
    public static Date getStartOfDay(Date date) {

        if (date == null) date = new Date();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
        LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);
        return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());
    }
2.1.3 当月最大时间包含时分秒
    LocalDateTime lastday = LocalDateTime.of(date.with(TemporalAdjusters.lastDayOfMonth()), LocalTime.MAX);
2.1.4 当月最小时间包含时分秒
 LocalDateTime firstday = LocalDateTime.of(date.with(TemporalAdjusters.firstDayOfMonth()), LocalTime.MIN);
2.1.5 方法与描述

方法

描述

static LocalDateTime now()

获取默认时区的当前日期时间

static LocalDateTime now(Clock clock)

从指定时钟获取当前日期时间

static LocalDateTime now(ZoneId zone)

获取指定时区的当前日期时间

static LocalDateTime of(LocalDate date, LocalTime time)

根据日期和时间对象获取LocalDateTime 实例

static LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second)

second) 根据指定的年、月、日、时、分、秒获取LocalDateTime 实例

getYear

获取年份

getMonth

使用月份枚举类获取月份

getDayOfMonth

获取日期在该月是第几天

getDayOfWeek

获取日期是星期几

getDayOfYear

获取日期在该年是第几天

getHour

获取小时

getMinute

获取分钟

getSecond

获取秒

getNano

获取纳秒

plusYears

增加年

plusMonths

增加月

plusWeeks

增加周

plusDays

增加天

plusHours

增加小时

plusMinutes

增加分

plusSeconds

增加秒

plusNanos

增加纳秒

minusYears

减少年

minusMonths

减少月

meminusWeeks

减少周

minusDays

减少天

minusHours

减少小时

minusMinutes

减少分

minusSeconds

减少秒

minusNanos

减少纳秒

isEqual

判断日期时间是否相等

isBefore

检查是否在指定日期时间之前

isAfter

检查是否在指定日期时间之后

2.1.6 代码示例(获取方法)
public void test(){
    //获取默认时区的当前日期时间
    System.out.println(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
    //获取指定时区的当前日期时间
    System.out.println(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
    //从指定时钟获取当前日期时间
    System.out.println(LocalDateTime.now(Clock.systemDefaultZone()));
    //根据日期和时间对象获取LocalDateTime实例
    System.out.println(LocalDateTime.of(LocalDate.now(), LocalTime.now()));
    //根据指定的年、月、日、时、分、秒获取LocalDateTime实例
    System.out.println(LocalDateTime.of(2019, 12, 7, 21, 48, 50));
    //获取年份
    System.out.println("年 : " + LocalDateTime.now().getYear());
    //使用月份枚举类获取月份
    System.out.println("月(英文) : " + LocalDateTime.now().getMonth());
    //使用月份数字类获取月份
    System.out.println(" 月(数字英文): " + LocalDateTime.now().getMonth().getValue());
    //获取日期在该月是第几天
    System.out.println("天 : " + LocalDateTime.now().getDayOfMonth());
    //(获取日期是星期几(英文)
    System.out.println("星期几(英文) : " + LocalDateTime.now().getDayOfWeek());
    //获取日期是星期几(数字英文)
    System.out.println("星期几(数字英文) : " + LocalDateTime.now().getDayOfWeek().getValue());
    //(获取日期在该年是第几天
    System.out.println("本年的第几天 : " + LocalDateTime.now().getDayOfYear());
    //获取小时
    System.out.println("时: " + LocalDateTime.now().getHour());
    //获取分钟
    System.out.println("分: " + LocalDateTime.now().getMinute());
    //获取秒
    System.out.println("秒: " + LocalDateTime.now().getSecond());
    //获取纳秒
    System.out.println("纳秒: " + LocalDateTime.now().getNano());
}
2.1.7 代码示例(计算方法)
public void test(){
    //增加天数
    System.out.println("增加天数 : " + LocalDateTime.now().plusDays(1));
    //增加周数
    System.out.println("增加周数 : " + LocalDateTime.now().plusWeeks(1));
    //增加月数
    System.out.println("增加月数 : " + LocalDateTime.now().plusMonths(1));
    //增加年数
    System.out.println("增加年数 : " + LocalDateTime.now().plusYears(1));
    //减少天数
    System.out.println("减少天数 : " + LocalDateTime.now().minusDays(1));
    //减少月数
    System.out.println("减少月数 : " + LocalDateTime.now().minusMonths(1));
    //减少周数
    System.out.println("减少周数 : " + LocalDateTime.now().minusWeeks(1));
    //减少年数
    System.out.println("减少年数 : " + LocalDateTime.now().minusYears(1));
    //增加小时
    System.out.println("增加1小时: " + LocalDateTime.now().plusHours(1));
    //增加分钟
    System.out.println("增加30分钟: " + LocalDateTime.now().plusMinutes(30));
    //增加秒数
    System.out.println("增加30秒: " + LocalDateTime.now().plusSeconds(30));
    //增加纳秒
    System.out.println("增加10000纳秒:" + LocalDateTime.now().plusNanos(10000));
    //减少小时
    System.out.println("减少1小时:" + LocalDateTime.now().minusHours(1));
    //减少分钟
    System.out.println("减少30分钟:" + LocalDateTime.now().minusMinutes(30));
    //减少秒数
    System.out.println("减少30秒: " + LocalDateTime.now().minusSeconds(30));
    //减少纳秒
    System.out.println("减少10000纳秒:" + LocalDateTime.now().minusNanos(10000));
}
2.1.8 代码示例(比较方法)
public void test(){
    //判断日期时间是否相等
    System.out.println(LocalDateTime.now().isEqual(LocalDateTime.now()));
    //检查是否在指定日期时间之前
    System.out.println(LocalDateTime.now().isBefore(LocalDateTime.now()));
    //检查是否在指定日期时间之后
    System.out.println(LocalDateTime.now().isAfter(LocalDateTime.now()));
}
2.1.9LocalDateTime与 String 之间的转换
public void test(){
    //(获取日期部分
    System.out.println(LocalDateTime.now().toLocalDate());
    //获取时间部分:时、分、秒
    System.out.println(LocalDateTime.now().toLocalTime().format(DateTimeFormatter.ofPattern("HH:mm:ss")));
    //从文本字符串获取LocalDateTime实例
    LocalDateTime ldt2 = LocalDateTime.parse("2019-12-07T21:20:06.303995200");
    System.out.println(ldt2.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
    //使用特定格式化形式(格式化参考1.2.2)从文本字符串获取LocalDateTime实例
    DateTimeFormatter df1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    LocalDateTime ldt3 = LocalDateTime.parse("2019-12-07 21:20:06", df1);
    System.out.println(ldt3);
    //使用特定格式化形式将LocalDateTime转为字符串
    String ldt4 = df1.format(ldt3);
    System.out.println(ldt4);
}
2.2.1 LocalDateTime与 Date之间的转换
public void test(){
    //LocalDateTime转化为Date
    ZonedDateTime zdt = LocalDateTime.now().atZone(ZoneId.systemDefault());
    Date date1 = Date.from(zdt.toInstant());
    System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date1));
    //Date转化为LocalDateTime
    LocalDateTime localDateTime = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
    System.out.println(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}

3.方法

3.1.1计算两个时间相差的分钟数
     /**
     * 计算两个时间想差的分钟数
     */
    public static String getDateTime(Date startDate, Date endDate) {
        // 获得两个时间的毫秒时间差异
        long diff = endDate.getTime() - startDate.getTime();
        // 计算差多少分钟
        long min = TimeUnit.MILLISECONDS.toMinutes(diff);
        return String.valueOf(min);
    }
3.1.2计算两个时间差(天,时,分)
    /**
     * 计算两个时间差
     */
    public static String getDatePoor(Date endDate, Date nowDate) {
        long nd = 1000 * 24 * 60 * 60;
        long nh = 1000 * 60 * 60;
        long nm = 1000 * 60;
        // long ns = 1000;
        // 获得两个时间的毫秒时间差异
        long diff = endDate.getTime() - nowDate.getTime();
        // 计算差多少天
        long day = diff / nd;
        // 计算差多少小时
        long hour = diff % nd / nh;
        // 计算差多少分钟
        long min = diff % nd % nh / nm;
        // 计算差多少秒//输出结果
        // long sec = diff % nd % nh % nm / ns;
        return day + "天" + hour + "小时" + min + "分钟";
    }
3.1.3计算相差天数
    /**
     * 计算相差天数
     */
    public static int differentDaysByMillisecond(Date date1, Date date2) {
        return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));
    }
3.1.4获取当年的第一天(返回date)
    /**
     * 获取当年的第一天
     *
     * @return
     */
    public static Date getCurrYearFirst() {
        Calendar currCal = Calendar.getInstance();
        int currentYear = currCal.get(Calendar.YEAR);
        return getYearFirst(currentYear);
    }

    public static Date getYearFirst(int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        Date currYearFirst = calendar.getTime();
        return currYearFirst;
    }
3.1.5获取某年最后一天日期(返回date)
    /**
     * 获取某年最后一天日期
     *
     * @param year 年份
     * @return Date
     */
    public static Date getYearLast(int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        calendar.roll(Calendar.DAY_OF_YEAR, -1);
        Date currYearLast = calendar.getTime();

        return currYearLast;
    }
3.1.6 1970-01-01 加天数 得到日期(日期格式)
 /**
     * 1970-01-01 加天数 得到日期(日期格式)
     */
    public static Date getDaysDate(Integer days) {
        Date date = dateTime(YYYY_MM_DD, "1970-01-01");
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, days);
        return calendar.getTime();
    }
3.1.7 计算 1970-01-01 到 规定日期的天数
 /**
     * 计算 1970-01-01 到 规定日期的天数
     */
    public static Integer betweenDays(Date endDate) {

        Date dateStart = dateTime(YYYY_MM_DD, "1970-01-01");
        long betweenDays = (endDate.getTime() - dateStart.getTime()) / (1000L * 3600L * 24L);
        return (int) betweenDays;
    }
3.1.8 传入分钟 返回时分秒 HH:mm:ss
  /**
     * 传入分钟  返回时分秒 HH:mm:ss
     */
    public static String getHourToSeconds(Integer time) {
        SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
        Date date = new Date(time * 60 * 1000);
        formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
        String returnFormat = formatter.format(date);
        return returnFormat;
    }
3.1.9 传入HH:mm:ss 获取 分钟数
 /**
     * 传入HH:mm:ss  获取 分钟数
     */
    public static Integer getMinutesNum(Date nowDate) throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
        String format = formatter.format(nowDate);
        formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
        Date date = formatter.parse(format);
        long l = date.getTime() / 1000 / 60;
        return (int) l;
    }
3.2.1 返回当前月份之前的月份 汉字
/**
     * 返回当前月份之前的月份  汉字
     */
    public static List<String> getMonthList(int year) {
        int todayYear = getTodayYear();
        String[] num_lower = {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"};
        List<String> list = new ArrayList<>();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(todayYear == year ? new Date() : getYearLast(year));
        int month = calendar.get(Calendar.MONTH) + 1;
        for (int i = 1; i <= month; i++) {
            list.add(num_lower[i - 1] + "月");
        }
        return list;
    }
3.2.2 判断是否是整点
/**
     * 判断是否是整点
     */
    public static boolean isFullDian(Date date) {
        boolean flag = false;
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        if (calendar.get(Calendar.MINUTE) == 0 && calendar.get(Calendar.SECOND) == 0) {
            flag = true;
        }
        return flag;
    }
3.2.3 判断当前分钟整点
/**
     * 判断当前分钟整点
     */
    public static boolean isFullMinute(Date date) {
        boolean flag = false;
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        if (calendar.get(Calendar.MINUTE) == 0) {
            flag = true;
        }
        return flag;
    }
3.2.4 判断两个时间是否相等 小时
/**
     * 判断两个时间是否相等  小时
     */
    public static boolean isEqalsDate(Date one, Date two) {
        boolean flag = false;
        SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH");
        String oneTime = dft.format(one);
        String twoTime = dft.format(two);
        if (oneTime.equals(twoTime)) {
            flag = true;
        }

        return flag;
    }

4. LocalTime(时分秒)常用方法

方法

描述

static LocalTime now()

获取默认时区的当前时间

static LocalTime now(ZoneId zone)

获取指定时区的当前时间

static LocalTime now(Clock clock)

从指定时钟获取当前时间

of

根据指定的时、分、秒获取LocalTime 实例

getHour

获取小时字段

getMinute

获取分钟字段

getSecond

获取秒字段

getNano

获取纳秒字段

plusHours

增加小时数

plusMinutes

增加分钟数

plusSeconds

增加秒数

plusNanos

增加纳秒数

minusHours

减少小时数

minusMinutes

减少分钟数

minusSeconds

减少秒数

minusNanos

减少纳秒数

compareTo

时间与另一个时间比较

isAfter

检查时间是否在指定时间之后

isBefore

检查时间是否在指定时间之前

4.1.1代码示例(获取方法)
public void test(){
    //获取默认时区的当前时间 14:11:31.294
    System.out.println(LocalTime.now());
    //获取指定时区的当前时间 14:11:31.392
    System.out.println(LocalTime.now(ZoneId.of("Asia/Shanghai")));
    //从指定时钟获取当前时间 14:11:31.392
    System.out.println(LocalTime.now(Clock.systemDefaultZone()));
    //指定获取时分秒
    System.out.println(LocalTime.of(12, 30, 30));
    //指定获取时分
    System.out.println(LocalTime.of(12, 30));
    //指定获取时分秒纳秒
    System.out.println(LocalTime.of(12, 30, 30, 123));
    //获取小时字段
    System.out.println("时: " + LocalTime.now().getHour());
    //获取分钟字段
    System.out.println("分: " + LocalTime.now().getMinute());
    //获取秒字段
    System.out.println("秒: " + LocalTime.now().getSecond());
    //获取纳秒字段
    System.out.println("纳秒: " + LocalTime.now().getNano());
}
4.1.2代码示例(计算方法)
public void test(){
    //增加一小时
    System.out.println("增加1小时: " + LocalTime.now().plusHours(1));
    //增加三十分钟
    System.out.println("增加30分钟: " + LocalTime.now().plusMinutes(30));
    //增加三十秒
    System.out.println("增加30秒: " + LocalTime.now().plusSeconds(30));
    //增加一万纳秒
    System.out.println("增加10000纳秒:" + LocalTime.now().plusNanos(10000));
    //减少一小时
    System.out.println("减少1小时: " + LocalTime.now().minusHours(1));
    //减少三十分钟
    System.out.println("减少30分钟: " + LocalTime.now().minusMinutes(30));
    //减少三十秒
    System.out.println("减少30秒: " + LocalTime.now().minusSeconds(30));
    //减少一万纳秒
    System.out.println("减少10000纳秒:" + LocalTime.now().minusNanos(10000));
}
4.1.3代码示例(比较方法)
public void test(){
    //时间与另一个时间比较 0(相等)正数(大)负数(小)
    System.out.println(LocalTime.now().compareTo(LocalTime.now()));
    //检查时间是否在指定时间之后
    System.out.println(LocalTime.now().isAfter(LocalTime.now()));
    //检查时间是否在指定时间之前
    System.out.println(LocalTime.now().isBefore(LocalTime.now()));
}
4.1.4 LocalTime与 String 之间的转换
public void test(){
    //从文本字符串获取LocalTime实例
    LocalTime localTime1 = LocalTime.parse("12:30:30");
    System.out.println(localTime1);
    //使用特定格式化形式从文本字符串获取LocalTime实例
    LocalTime localTime2 = LocalTime.parse("12:30:30", DateTimeFormatter.ofPattern("HH:mm:ss"));
    System.out.println(localTime2);
    //使用特定格式化形式将LocalTime转为字符串
    DateTimeFormatter df1 = DateTimeFormatter.ofPattern("HH:mm:ss");
    LocalTime localTime3 = LocalTime.now();
    System.out.println(localTime3.format(df1));
}