jdk1.8 新特性——LocalDate和LocalDateTime

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类型,不能转换带日期格式的字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值