1. 新的日期时间API
新的日期时间API:LocalDate、LocalTime、LocalDateTime 都是线程安全的,一旦创建就不能被修改。
2. LocalDateTime API
2.1 基础方法
public static LocalDateTime now() 获取当前的日期时间。
public static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second)
获得指定年,月,日,时,分、秒的LocalDateTime实例,将纳秒设置为零。
month:取值1-12,12表示12月。
dayOfMonth:取值1-31,31表示31日。
hour:取值0-23。
minute:取值0-59。
second:取值0-59。
public LocalDate toLocalDate() 获取这个日期时间的LocalDate部分。
public LocalTime toLocalTime() 获取此日期时间的LocalTime部分。
public int getYear() 获取年份字段int值。
public int getMonthValue() 获取月份字段int值,从1到12。
public int getDayOfMonth() 获取月中day字段int值,从1到31。
public int getDayOfYear() 获取年中day字段int值,从1到365,或闰年366。
public int getHour() 获取时间字段,从0到23。
public int getMinute() 获取小时字段,从0到59。
public int getSecond() 获得秒的字段,从0到59。
public DayOfWeek getDayOfWeek() 获取星期几字段,从1到7,1为周一。
2.2 日期增减
public LocalDateTime plusYears(long years) 返回此LocalDateTime的副本,添加年,years可为负数。
public LocalDateTime minusYears(long years) 返回此LocalDateTime的副本,减去年,years可为负数。
示例:
LocalDateTime ldt = LocalDateTime.of(2008, 2, 29, 23, 59, 59);
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String ldtStr = ldt.format(format); // 2008-02-29 23:59:59
ldt = ldt.plusYears(1);
ldtStr = ldt.format(format); // 2009-02-28 23:59:59
2008-02-29(闰年)加上一年将导致无效日期2009-02-29,结果会选择最后一个有效日期2009-02-28返回。
注:月、日、时、分、秒的增减与年都一致。
2.3 日期变更
public LocalDateTime withYear(int year)
返回此年份变更的LocalDateTime的副本。如果日期无效,它将被更改为该月的最后一个有效日期。
注:月、日、时、分、秒的变更与年类似。
2.4 日期比较
public int compareTo(ChronoLocalDateTime<?> other) 将此日期时间与其他日期时间进行比较。
LocalDate a = LocalDate.of(2019, 8, 5);
LocalDate b = LocalDate.of(2019, 8, 1);
LocalDate c = LocalDate.of(2019, 8, 8);
a.compareTo(a); // 0 相等为0
a.compareTo(b); // 4 大于为正数
a.compareTo(c); // -3 小于为负数
public boolean isAfter(ChronoLocalDateTime<?> other) 检查此日期时间是否在指定的日期之后。
public boolean isBefore(ChronoLocalDateTime<?> other) 检查此日期时间是否在指定的日期时间之前。
public boolean isEqual(ChronoLocalDateTime<?> other) 检查此日期时间是否等于指定的日期时间。
2.5 字符串与日期转换
1.日期转换为字符串
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String nowStr = now.format(format);
2.字符串转换为日期
String dateStr = "2019-08-01 14:28:58";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime date = LocalDateTime.parse(dateStr, formatter);