1、LocalDate
LocalDate主要是用来处理日期的类,主要有以下方法:
方法 | 说明 | 举例 |
LocalDate.now() | 获取当前日期 | 运行结果为:2019-01-07 |
LocalDate.of(int year, int month, int dayOfMonth) | 根据参数设置日期,参数分别为年,月,日 | 运行结果为:2019-01-07 |
localDate.getDayOfMonth() localDate.getDayOfWeek() localDate.getDayOfYear() | 获取当前日期是所在月的第几天 获取当前日期是星期几(星期的英文全称) 获取当前日期是所在年的第几天 | 运行结果为:7,MONDAY,7 |
localDate.getMonth() localDate.getMonthValue() localDate.lengthOfMonth() | 获取当前日期所在月份(月份的英文全称) 获取当前日期所在月份的数值 获取当前日期所在月份有多少天 | 运行结果为:JANUARY,1,31 |
localDate.lengthOfYear() localDate.isLeapYear() | 获取当前日期所在年有多少天 获取当前日期所在年是否是闰年 | 运行结果为:365,false |
localDate.withDayOfMonth(int dayOfMonth) localDate.withDayOfYear(int dayOfYear) localDate.withMonth(int month) localDate.withYear(int year) | with开头的方法,我的理解是将参数替换localDate中的对应 属性,重新计算得到新的日期。 将参数中的"日"替换localDate中的"日" 将参数中的天数替换localDate中的天数 将参数中的"月"替换localDate中的"月" 将参数中的"年"替换localDate中的"年" | 运行结果为: 2019-01-02, 2019-02-09, 2019-02-07, 2020-01-07 |
localDate.minusDays(long days) localDate.minusWeeks(long weeks) localDate.minusMonths(long months) localDate.minusYears(long years) localDate.plusDays(long days) localDate.plusWeeks(long weeks) localDate.plusMonths(long months) localDate.plusYears(long years) | 将当前日期减一天 将当前日期减一周 将当前日期减一月 将当前日期减一年 将当前日期加一天 将当前日期加一周 将当前日期加一月 将当前日期加一年 |
2、LocalTime
LocalTime主要是用来处理时间的类,主要有以下方法:
方法 | 说明 | 举例 |
LocalTime.now() | 获取当前时间 | 运行结果为:22:53:44.277 |
LocalTime.of(int hour, int minute) LocalTime.of(int hour, int minute, int second) | 根据参数设置时间,参数分别为时,分 根据参数设置时间,参数分别为时,分,秒 | 运行结果为:12:35:59,12:35 |
localTime.getHour() localTime.getMinute() localTime.getSecond() | 获取当前时间的小时数 获取当前时间的分钟数 获取当前时间的秒数 | 运行结果为:12,35,59 |
localTime.withHour(int hour) localTime.withMinute(int minute) localTime.withSecond(int second) | with开头的方法,我的理解是将参数替换localTime中的对应属性, 重新计算得到新的时间。 将参数中的"小时"替换localTime中的"小时" 将参数中的"分钟"替换localTime中的"分钟" 将参数中的"秒"替换localTime中的"秒" | 运行结果为: 01:35:59 |
localTime.minusHours(long hours) localTime.minusMinutes(long minutes) localTime.minusSeconds(long seconds) localTime.plusHours(long hours) localTime.plusMinutes(long minutes) localTime.plusSeconds(long seconds) | 将当前时间减一小时 将当前时间减一分钟 将当前时间减一秒 将当前时间加一小时 将当前时间加一分钟 将当前时间加一秒 |
运行结果为: 11:35:59 |
3、日期 + 时间
从1和2中可以看出,LocalDate的方法主要都是用来处理日期的,而LocalTime的方法主要都是用来处理时间的,但两个类都提供了表示日期 + 时间的方法。
LocalDate提供了atTime方法,用来表示日期 + 时间
LocalDate localDate = LocalDate.of(2019,1,7);
System.out.println(localDate.atTime(LocalTime.now()));
System.out.println(localDate.atTime(10,30));
System.out.println(localDate.atTime(10,30,59));
运行结果为:
2019-01-07T23:21:32.804
2019-01-07T10:30
2019-01-07T10:30:59
LocalTime提供了atDate方法,用来表示日期 + 时间
LocalTime localTime = LocalTime.of(12,35,59);
System.out.println(localTime.atDate(LocalDate.of(2019,1,7)));
运行结果为:2019-01-07T12:35:59
4、格式转换
从3中我们可以看出,表示日期 + 时间后,格式发生了变化,原来atTime和atDate方法的返回值都是LocalDateTime类,这个类把toString()方法重写了,导致输出的格式变化了。
@Override
public String toString() {
return date.toString() + 'T' + time.toString();
}
那么想要转换日期或时间的格式该怎么办呢?
LocalDate和LocalTime都提供了格式转换的方法,format和parse
方法 | 说明 | 举例 |
LocalDate.format(DateTimeFormatter formatter) | 将LocalDate类型的数据转换为String类型的数据,参数为DateTimeFormatter类,该类提供了ofPattern(String pattern)方法,可传入相应的日期格式: yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-dd HH, yyyy-MM-dd HH:mm, yyyy-MM-dd HH:mm:ss
注:若LocalDate未调用atTime方法,则表示LocalDate只表示日期,则此时不能转换带有时间格式的表示式 |
运行结果为: 2019 |
LocalTime.format(DateTimeFormatter formatter) |
将LocalTime类型的数据转换为String类型的数据,参数为DateTimeFormatter类, 该类提供了ofPattern(String pattern)方法,可传入相应的日期格式: yyyy, yyyy-MM, yyyy-MM-dd, yyyy-MM-dd HH, yyyy-MM-dd HH:mm, yyyy-MM-dd HH:mm:ss
注:若LocalTime未调用atDate方法,则表示LocalTime只表示时间,则此时不能转换带有日期格式的表示式 | 运行结果为:2019-01-07 23:07:06
其他格式这里就不一一列举了 |
LocalDate.parse(CharSequence text) | 将日期字符串转换成LocalDate类型,不能转换带时间格式的字符串 | 运行结果为:2019-10-15 |
LocalTime.parse(CharSequence text) | 将时间字符串转换成LocalTime类型,不能转换带日期格式的字符串 |