前言:
本节主要记录工作中经常使用的日期操作
时间类
JDK1.8的新日期类:LocalDateTime,LocalDate,LocalTime
- LocalDate:表示日期,通常被视为年月日。 例如:2021年3月23日
- LocalTime:代表一个时间,通常被看作是小时 - 秒。 时间表示为纳秒精度,例如:11:09:25.234
- LocalDateTime:代表日期时间,通常被视为年 - 月 - 日 - 时 - 分 - 秒 例如:2021年3月23日 11:09:25.324
LocalDateTime包含属性:
private final LocalDate date;
private final LocalTime time;
LocalDateTime常用API:
1、获取LocalDateTime实例
- public static LocalDateTime now():从指定时区的系统时钟获取当前的日期时间。
- public static LocalDateTime now(Clock clock) 从指定的时钟获取当前的日期时间,clock不能为空。
- public static LocalDateTime of(LocalDate date, LocalTime time)从日期和时间获取一个 LocalDateTime的实例。
- public static LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second) 从年,月,日,小时,分钟和秒获得LocalDateTime的实例,将纳秒设置为零。
- year - 从默认的 MIN_YEAR到 MAX_YEAR 的年份
- month - 代表月份的1-12,不为空
- dayOfMonth - 代表月份中1-31,以月份中天数大小为准。
- hour - 从0到23的小时。
- minute - 从0到59的分钟。
- second - 从0到59的秒其他的同上
2、获取年月日信息
• public int getDayOfYear() 获得日期字段 (获得是年份中的第几天) 例如 2020/12/3 获得2020的第338天。
• public int getDayOfMonth() 获取月份字段 (获取月份中的第几天) 例如 2020/12/3 获得12月的第3天。
• public DayOfWeek getDayOfWeek()获取星期几字段,这是一个枚举DayOfWeek 。(获得整个星期的星期几)例如 2020/12/3 获得这周的星期四。
• public int getYear()获取年份字段。
• public Month getMonth()使用Month枚举获取月份字段(获得不是数组而是英文单词)。
• public int getHour()获取时间字段。
• public int getMinute()获取分钟字段。
• public int getSecond() 获得第秒的字段。
3、修改时间
• public LocalDateTime withYear(int year)返回此年份变更的LocalDateTime的副本。 时间不影响计算,结果将相同。 如果一年中的日期无效,它将被更改为该月的最后一个有效日期。
• public LocalDateTime withMonth(int month)返回此年份更改的LocalDateTime的副本。 时间不影响计算,结果将相同。 如果一年中的日期无效,它将被更改为该月的最后一个有效日期。
• public LocalDateTime withDayOfMonth(int dayOfMonth)返回这个LocalDateTime的副本,并更改日期。 如果结果LocalDateTime无效,则会抛出异常。 时间不影响计算,结果将相同。
• public LocalDateTime withDayOfYear(int dayOfYear)返回此LocalDateTime的副本。 如果得到LocalDateTime是无效的,则抛出异常。
• public LocalDateTime withHour(int hour)返回此日期值更改的LocalDateTime的副本。
• public LocalDateTime withMinute(int minute)返回这个LocalDateTime的副本,小时值更改。
• public LocalDateTime withSecond(int second)返回这个LocalDateTime的副本,并更改秒数值。
4、增加时间
• public LocalDateTime plusYears(long years)返回这个LocalDateTime的副本,并以指定的时间段添加。
• 例如,2008-02-29(闰年)减去一年将导致无效日期2009-02-29(标准年)。 而不是返回无效结果,而是选择2009-02-28的最后一个有效日期。下例是LocalDate的实现:
private static LocalDate resolvePreviousValid(int year, int month, int day) {
switch (month) {
case 2:
day = Math.min(day, IsoChronology.INSTANCE.isLeapYear(year) ? 29 : 28);
break;
case 4:
case 6:
case 9:
case 11:
day = Math.min(day, 30);
break;
}
return new LocalDate(year, month, day);
}
• public LocalDateTime plusMonths(long months)返回这个LocalDateTime的副本,其中指定的时间段以月为单位。
• public LocalDateTime plusWeeks(long weeks)返回这个LocalDateTime的副本,其中指定的周期以周为单位。
• public LocalDateTime plusDays(long days)返回此LocalDateTime的指定期间的LocalDateTime的副本。
• public LocalDateTime plusHours(long hours)以指定的时间段返回此LocalDateTime的副本,小时数。
• public LocalDateTime plusMinutes(long minutes)以指定的时间(以分钟为单位)返回此LocalDateTime的副本。
• public LocalDateTime plusSeconds(long seconds)返回此副本LocalDateTime在加秒的规定时间。
5、减少时间
• public LocalDateTime minusYears(long years)返回此LocalDateTime的副本,以减去的年份为单
• public LocalDateTime minusMonths(long months)返回此LocalDateTime的副本,指定的时间以月为单位减去。
• public LocalDateTime minusWeeks(long weeks)返回此LocalDateTime一个副本,以指定的周期扣除。
• public LocalDateTime minusDays(long days)返回此LocalDateTime的副本,其中指定的时间间隔以天为单位
• public LocalDateTime minusHours(long hours)以指定的时间段返回此LocalDateTime的副本,以减少的小时数。
• public LocalDateTime minusMinutes(long minutes)返回此LocalDateTime的副本,其中指定的时间间隔以分钟为单位。
• public LocalDateTime minusSeconds(long seconds)返回此LocalDateTime的副本,其中指定的时间间隔以秒为单位。
6、其他
• public String format(DateTimeFormatter formatter)使用指定的格式化程序格式化此日期时间。这个日期时间将传递给格式化程序以生成一个字符串。
• public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter)使用特定的格式化LocalDateTime从文本字符串获取LocalDateTime的实例。
• public boolean isBefore(ChronoLocalDateTime<?> other) 检查此日期时间是否在指定的日期时间之前 • public boolean isAfter(ChronoLocalDateTime<?> other)检查这个日期时间是否在指定的日期之后。
• public boolean equals(Object obj) 检查这个日期时间是否等于另一个日期时间。
• public boolean isEqual(ChronoLocalDateTime<?> other)检查此日期时间是否等于指定的日期时间。
• public String toString()将此日期时间输出为String,如2007-12-03T10:15:30。
• public LocalDateTime truncatedTo(TemporalUnit unit):根据unit单位截断时间