JDK1.8中,新增了两个处理日期和时间的类,一个是LocalDate,另一个是LocalTime,下面将分开将这两个类的方法列举出来并将里面的方法进行说明。
1、LocalDate
LocalDate主要是用来处理日期的类,主要有以下方法:
1.1 LocalDate.now() 获取当前日期;
1.2 LocalDate.of(int year, int month, int dayOfMonth) 根据参数设置日期,参数分别为年,月,日;
1.3 LocalDate.getDayOfMonth() 获取当前日期是所在月的第几天;
1.4 LocalDate.getDayOfWeek().getValue() 获取当前日期是星期几(星期的英文全称);
1.5 LocalDate.getDayOfYear() 获取当前日期是所在年的第几天;
1.6 LocalDate.getMonth() 获取当前日期所在月份(月份的英文全称);
1.7 LocalDate.getMonthValue() 获取当前日期所在月份的数值;
1.8 LocalDate.lengthOfMonth() 获取当前日期所在月份有多少天,返回int;
1.9 LocalDate.lengthOfYear() 获取当前日期所在年有多少天,返回int;
1.10 LocalDate.isLeapYear() 获取当前日期所在年是否是闰年,返回boolean;
LocalDate.with(TemporalAdjusters.firstDayOfMonth()) 获取当前日期的第1天;
LocalDate.with(TemporalAdjusters.lastDayOfMonth()) 获取当前日期月份的最后一天
1.11 LocalDate.withDayOfMonth(int dayOfMonth) 将参数中的"日"替换localDate中的"日";
1.12 LocalDate.withDayOfYear(int dayOfYear) 将参数中的天数替换localDate中的天数;
1.13 LocalDate.withMonth(int month) 将参数中的"月"替换localDate中的"月"
1.14 LocalDate.withYear(int year) 将参数中的"年"替换localDate中的"年";
1.15 LocalDate.minusDays(long days) 将当前日期减几天;
1.16 LocalDate.minusWeeks(long weeks) 将当前日期减几周;
1.17 LocalDate.minusMonths(long months) 将当前日期减几月;
1.18 LocalDate.minusYears(long years) 将当前日期减几年;
1.19 LocalDate.plusDays(long days) 将当前日期加几天;
1.20 LocalDate.plusWeeks(long weeks) 将当前日期加几周;
1.21 LocalDate.plusMonths(long months) 将当前日期加几月;
1.22 LocalDate.plusYears(long years) 将当前日期加一年;
2.LocalTime
LocalTime主要是用来处理时间的类,主要有以下方法:
2.1 LocalTime.now() 获取当前时间;
2.2 LocalTime.of(int hour, int minute) 根据参数设置时间,参数分别为时,分;
2.3 LocalTime.of(int hour, int minute, int second) 根据参数设置时间,参数分别为时,分,秒;
2.4 LocalTime.getHour() 获取当前时间的小时数;
2.5 LocalTime.getMinute() 获取当前时间的分钟数;
2.6 LocalTime.getSecond() 获取当前时间的秒数;
2.7 LocalTime.withHour(int hour) 将参数中的"小时"替换localTime中的"小时";
2.8 LocalTime.withMinute(int minute) 将参数中的"分钟"替换localTime中的"分钟";
2.9 LocalTime.withSecond(int second) 将参数中的"秒"替换localTime中的"秒";
2.10 LocalTime.minusHours(long hours) 将当前时间减几小时;
2.11 LocalTime.minusMinutes(long minutes) 将当前时间减几分钟;
2.12 LocalTime.minusSeconds(long seconds) 将当前时间减几秒;
2.13 LocalTime.plusHours(long hours) 将当前时间加几小时;
2.14 LocalTime.plusMinutes(long minutes) 将当前时间加几分钟;
2.15 LocalTime.plusSeconds(long seconds) 将当前时间加几秒;
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只表示日期,则此时不能转换带有时间格式的表示式。
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只表示时间,则此时不能转换带有日期格式的表示式。
LocalDate.parse(CharSequence text) 将日期字符串转换成LocalDate类型,不能转换带时间格式的字符串。
LocalTime.parse(CharSequence text) 将时间字符串转换成LocalTime类型,不能转换带日期格式的字符串。
————————————————
原文链接:https://blog.youkuaiyun.com/scholar_man/article/details/103110143