Java日期工具类LocalDateTime

发布时间:2023年12月29日

嘚吧嘚

压轴的来了,个人感觉LocalDateTime是使用频率最高的工具类,所以本篇像文章详细研究说明一下🧐。
如果看了Java日期工具类LocalDateJava时间工具类LocalTime👍,那么本篇文章就算是一个整合、进阶吧😎。

LocalDateTime - API

创建时间

函数声明描述
static LocalDateTime now()获取默认时区的当前日期时间
static LocalDateTime now(ZoneId zone)获取指定时区的当前日期时间
static LocalDateTime now(Clock clock)从指定时钟获取当前日期时间
static LocalDateTime of(LocalDate date, LocalTime time)根据日期和时间对象获取LocalDateTime对象
static LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second)根据指定的年、月、日、时、分、秒获取LocalDateTime实例

LocalDateTime now()

获取指定时区、时钟的日期时间就不多做说明了,和LocalDate一样。

// 获取当前时间
LocalDateTime now = LocalDateTime.now();
System.out.println("now : " + now);
// 格式化
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String nowStr = now.format(formatter);
System.out.println("nowStr : " + nowStr);

在这里插入图片描述
LocalDateTime of()
在这里插入图片描述

获取年月日时分秒

函数声明描述
int getYear()获取年份
Month getMonth()获取月份,返回值为月份的枚举
int getMonthValue()获取月份,返回值为int类型月份
DayOfWeek getDayOfWeek()获取日期是星期几
int getDayOfMonth()获取日期在该月是第几天
int getDayOfYear()获取日期在该年是第几天
int getHour()获取小时
int getMinute()获取分钟
int getSecond()获取秒钟
int getNano()获取纳秒
LocalDateTime now = LocalDateTime.now();
// 获取年
System.out.println("getYear : " + now.getYear());
// 获取月份
System.out.println("getMonth : " + now.getMonth());
System.out.println("getMonthValue : " + now.getMonthValue());
// 获取日
System.out.println("getDayOfWeek : " + now.getDayOfWeek());
System.out.println("getDayOfMonth : " + now.getDayOfMonth());
System.out.println("getDayOfYear : " + now.getDayOfYear());
// 获取小时
System.out.println("getHour : " + now.getHour());
// 获取分钟
System.out.println("getMinute : " + now.getMinute());
// 获取秒
System.out.println("getSecond : " + now.getSecond());
// 获取纳秒
System.out.println("getNano : " + now.getNano());

在这里插入图片描述

增加时间

虽然是增加时间,传参可为正数,也可为负数。传参为正数时增加,传参为负数时减少。

函数声明描述
LocalDateTime plusYears(long years)增加年
LocalDateTime plusMonths(long months)增加月份
LocalDateTime plusWeeks(long weeks)增加周
LocalDateTime plusDays(long days)增加日
LocalDateTime plusHours(long hours)增加小时
LocalDateTime plusMinutes(long minutes)增加分钟
LocalDateTime plusSeconds(long seconds)增加秒
LocalDateTime plusNanos(long nanos)增加纳秒

增加年、月、周、日

LocalDateTime now = LocalDateTime.now();
System.out.println("now:" + now);
// 修改年份
System.out.println("plusYears : " + now.plusYears(1));
System.out.println("plusYears : " + now.plusYears(-1));
// 修改月份
System.out.println("plusMonths : " + now.plusMonths(1));
System.out.println("plusMonths : " + now.plusMonths(-2));
// 修改周
System.out.println("getDayOfWeek : " + now.plusWeeks(1));
System.out.println("getDayOfWeek : " + now.plusWeeks(-2));
// 修改日
System.out.println("plusDays : " + now.plusDays(3));
System.out.println("plusDays : " + now.plusDays(-3));

在这里插入图片描述

增加时、分、秒、纳秒

        LocalDateTime now = LocalDateTime.now();
        System.out.println("now:" + now);
        // 修改小时
        System.out.println("plusHours : " + now.plusHours(2));
        System.out.println("plusHours : " + now.plusHours(-5));
        // 修改分钟
        System.out.println("plusMinutes : " + now.plusMinutes(20));
        System.out.println("plusMinutes : " + now.plusMinutes(-15));
        // 修改秒
        System.out.println("plusSeconds : " + now.plusSeconds(11));
        System.out.println("plusSeconds : " + now.plusSeconds(-31));
        // 修改纳秒
        System.out.println("plusNanos : " + now.plusNanos(53));
        System.out.println("plusNanos : " + now.plusNanos(-63));

在这里插入图片描述

减少时间

虽然是减少时间,传参可为正数,也可为负数。传参为正数时减少,传参为负数时增加。

函数声明描述
LocalDateTime minusYears(long years)减少年
LocalDateTime minusMonths(long months)减少月份
LocalDateTime minusWeeks(long weeks)减少周
LocalDateTime minusDays(long days)减少日
LocalDateTime minusHours(long hours)减少小时
LocalDateTime minusMinutes(long minutes)减少分钟
LocalDateTime minusSeconds(long seconds)减少秒
LocalDateTime minusNanos(long nanos)减少纳秒

减少其实也是调用的增加的方法
在这里插入图片描述
以减少年为例

LocalDateTime now = LocalDateTime.now();
System.out.println("now:" + now);
// 减少年
System.out.println("minusYears : " + now.minusYears(2));
System.out.println("minusYears : " + now.minusYears(-5));

在这里插入图片描述

替换时间

函数声明描述
LocalDateTime withYear(int year)替换年(-999999999-999999999)
LocalDateTime withMonth(int month)替换月份(1-12)
LocalDateTime withDayOfMonth(int dayOfMonth)替换为本月中的第几天(1-31)
LocalDateTime withDayOfYear(int dayOfYear)替换为本年中的第几天(1-366)
LocalDateTime withHour(int hour)替换小时(0-23)
LocalDateTime withMinute(int minute)替换分钟(0-59)
LocalDateTime withSecond(int second)替换秒(0-59)
LocalDateTime withNano(int nanoOfSecond)替换纳秒(0-999999999)
LocalDateTime now = LocalDateTime.now();
System.out.println("now:" + now);
// 替换年
System.out.println("withYear : " + now.withYear(1996));
// 替换月
System.out.println("withMonth : " + now.withMonth(5));
// 替换日
System.out.println("withDayOfMonth : " + now.withDayOfMonth(5));
System.out.println("withDayOfYear : " + now.withDayOfYear(5));
// 替换时
System.out.println("withHour : " + now.withHour(5));
// 替换分
System.out.println("withMinute : " + now.withMinute(5));
// 替换秒
System.out.println("withSecond : " + now.withSecond(5));
// 替换纳秒
System.out.println("withNano : " + now.withNano(5));

在这里插入图片描述

日期比较

函数声明描述
boolean isEqual(ChronoLocalDateTime<?> other)判断日期时间是否相等
boolean isAfter(ChronoLocalDateTime<?> other)检查是否在指定日期时间之前
boolean isBefore(ChronoLocalDateTime<?> other)检查是否在指定日期时间之后
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime time1 = LocalDateTime.of(1999, 12, 5, 10, 12, 12);
LocalDateTime time2 = LocalDateTime.of(1999, 12, 6, 10, 12, 12);
String timeStr1 = time1.format(formatter);
String timeStr2 = time2.format(formatter);
System.out.println("time1 : " + timeStr1);
System.out.println("time2 : " + timeStr2);
System.out.println(timeStr1 + " = " + timeStr2 + " : " + time1.isEqual(time2));
System.out.println(timeStr1 + " > " + timeStr2 + " : " + time1.isAfter(time2));
System.out.println(timeStr1 + " < " + timeStr2 + " : " + time1.isBefore(time2));

在这里插入图片描述
Java8新特性日期工具类的梳理到此结束,欢迎大家补充说明😉。

文章来源:https://blog.csdn.net/engerla/article/details/135292631
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。