1. 首页
  2. IT资讯

Java8 新特性之日期-时间 API

“u003Cpu003E作者 | Liantu003Cu002Fpu003Eu003Cpu003E链接 | cnblogsu003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-1″u003E.comu003Cu002Fiu003Eu002Fliantdevu002Fpu002F10108504.htmlu003Cu002Fpu003Eu003Cpu003E在Java8之前的版本中,我们处理时间类型常常使用的是java.util包下的Date类。u003Cu002Fpu003Eu003Cpu003E但使用Date类却有诸多的弊端,如:java.util.Date是非线程安全的,所有的日期类都是可变的;日期u002F时间类的定义并不一致,在java.util和java.sql的包下都含有Date类,在开发过程中极易出错;日期类并不提供国际化,没有时区支持。u003Cu002Fpu003Eu003Cpu003E为了解决以上问题,Java8在java.time包下提供了很多新的API,常用的类包括LocalDate、LocalTime、LocalDateTime,用以处理日期,时间,日期u002F时间等u003Cu002Fpu003Eu003Cpu003Eu003Cu002Fpu003Eu003Ch1 toutiao-origin=”h3″u003ELocalDate类u003Cu002Fh1u003Eu003Cpu003ELocalDate是一个不可变类,在不考虑时区的情况下可以对日期(不包括时间)进行各种操作,它的默认格式是yyyy-MM-u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-3″u003Eddu003Cu002Fiu003Eu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E获取当前日期以及年、月、日u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E代码示例:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003Eu002Fu002F获取当前日期以及年、月、日u003Cbru003ELocalDate localDate = LocalDate.now;u003Cbru003Eint year = localDate.getYear;u003Cbru003Eint month = localDate.getMonthValue;u003Cbru003Eint day = localDate.getDayOfMonth;u003Cbru003ESystem.out.println(“当前日期:” + localDate);u003Cbru003ESystem.out.println(“年:” + year + ” 月:” + month + ” 日:” + day);u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E运行结果:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003E当前日期:2018-12-12u003Cbru003E年:2018 月:12 日:12u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cstrongu003E获取指定的日期u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E代码示例:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003Eu002Fu002F获取指定的日期u003Cbru003ELocalDate specifiedDay = LocalDate.of(2008, 8, 18);u003Cbru003ESystem.out.println(“指定日期:” + specifiedDay);u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E运行结果:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003E指定日期:2008-08-18u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cstrongu003E比较两个时间的先后顺序以及是否相等u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E代码示例:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003ELocalDate localDate = LocalDate.now;u003Cbru003ELocalDate otherDate = LocalDate.of(2018, 11, 11);u003Cbru003Eu003Cbru003Eu002Fu002Fequals方法用于比较两个日期是否相等u003Cbru003Eif(localDate.equals(otherDate)) {u003Cbru003ESystem.out.println(“localDate与otherDate相等!”);u003Cbru003E} else {u003Cbru003Eu002Fu002FisAfter和isBefore方法用于比较两个日期前后顺序u003Cbru003Eif(localDate.isAfter(otherDate)) {u003Cbru003ESystem.out.println(“localDate晚于otherDate!”);u003Cbru003E}u003Cbru003Eif(localDate.isBefore(otherDate)) {u003Cbru003ESystem.out.println(“localDate早于otherDate!”);u003Cbru003E}u003Cbru003E}u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E运行结果:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003ElocalDate晚于otherDate!u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cstrongu003E对日期做加减运算u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E代码示例:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003ELocalDate localDate = LocalDate.now;u003Cbru003ESystem.out.println(“2年后日期:” + localDate.plusYears(2));u003Cbru003ESystem.out.println(“6月后日期:” + localDate.plusMonths(6));u003Cbru003ESystem.out.println(“3周后日期:” + localDate.plusWeeks(3));u003Cbru003ESystem.out.println(“15天后日期:” + localDate.plusDays(15));u003Cbru003Eu003Cbru003ESystem.out.println(“2年前日期:” + localDate.minusYears(2));u003Cbru003ESystem.out.println(“6月前日期:” + localDate.minusMonths(6));u003Cbru003ESystem.out.println(“3周前日期:” + localDate.minusWeeks(3));u003Cbru003ESystem.out.println(“15天前日期:” + localDate.minusDays(15));u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E运行结果:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003E2年后日期:2020-12-12u003Cbru003E6月后日期:2019-06-12u003Cbru003E3周后日期:2019-01-02u003Cbru003E15天后日期:2018-12-27u003Cbru003Eu003Cbru003E2年前日期:2016-12-12u003Cbru003E6月前日期:2018-06-12u003Cbru003E3周前日期:2018-11-21u003Cbru003E15天前日期:2018-11-27u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cstrongu003E获取日期间隔的天数u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E代码示例:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003Eu002Fu002F获取某年份的第N天的日期u003Cbru003ELocalDate specialDay = LocalDate.ofYearDay(2018, 100);u003Cbru003ESystem.out.println(“2018年的第100天:” + specialDay);u003Cbru003Eu002Fu002F获取两个日期的间隔天数u003Cbru003Elong intervalDay = localDate.toEpochDay – specialDay.toEpochDay;u003Cbru003ESystem.out.println(“间隔天数:” + intervalDay);u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E运行结果:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003E2018年的第100天:2018-04-10u003Cbru003E间隔天数:246u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cu002Fpu003Eu003Ch1 toutiao-origin=”h3″u003ELocalTime类u003Cu002Fh1u003Eu003Cpu003ELocalTime与LocalDate一样,也是一个不可变的类,默认格式是hh:mm:ss.zzz,它提供了对时间的各种操作u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E获取当前时间以及自定义时间u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E代码示例:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003Eu002Fu002F获取当前时间、时、分、秒以及自定义时间u003Cbru003ELocalTime localTime = LocalTime.now;u003Cbru003Eint hour = localTime.getHour;u003Cbru003Eint minute = localTime.getMinute;u003Cbru003Eint second = localTime.getSecond;u003Cbru003ESystem.out.println(“当前时间:” + localTime);u003Cbru003ESystem.out.println(“时:” + hour + ” 分:” + minute + ” 秒:” + second);u003Cbru003Eu003Cbru003Eu002Fu002F获取自定义时间u003Cbru003ELocalTime specifiedTime = LocalTime.of(15, 30, 45);u003Cbru003ESystem.out.println(“自定义时间:” + specifiedTime);u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E运行结果:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003E当前时间:13:45:59.039u003Cbru003E时:13 分:45 秒:59u003Cbru003E自定义时间:15:30:45u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cstrongu003E比较两个时间的先后顺序u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E代码示例:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003Eu002Fu002Fequals方法比较两个时间是否相等u003Cbru003Eif(localTime.equals(specifiedTime)) {u003Cbru003ESystem.out.println(“localTime与specifiedTime相等!”);u003Cbru003E} else {u003Cbru003Eu002Fu002FisAfter、isBefore方法比较两个时间的先后顺序u003Cbru003Eif(localTime.isAfter(specifiedTime)) {u003Cbru003ESystem.out.println(“localTime晚于specifiedTime!”);u003Cbru003E}u003Cbru003Eif(localTime.isBefore(specifiedTime)) {u003Cbru003ESystem.out.println(“localTime早于specifiedTime!”);u003Cbru003E}u003Cbru003E}u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E运行结果:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003ElocalTime早于specifiedTime!u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cstrongu003E对时间做加减运算u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E代码示例:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003ELocalTime localTime = LocalTime.now;u003Cbru003ESystem.out.println(“当前时间:” + localTime);u003Cbru003ESystem.out.println(“2小时后时间:” + localTime.plusHours(2));u003Cbru003ESystem.out.println(“30分钟后时间:” + localTime.plusMinutes(30));u003Cbru003ESystem.out.println(“500秒后日时间:” + localTime.plusSeconds(500));u003Cbru003Eu003Cbru003ESystem.out.println(“2小时前时间:” + localTime.minusHours(2));u003Cbru003ESystem.out.println(“30分钟前时间:” + localTime.minusMinutes(30));u003Cbru003ESystem.out.println(“500秒前时间:” + localTime.minusSeconds(500));u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E运行结果:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003E当前时间:14:10:15.666u003Cbru003E2小时后时间:16:10:15.666u003Cbru003E30分钟后时间:14:40:15.666u003Cbru003E500秒后时间:14:18:35.666u003Cbru003Eu003Cbru003E2小时前时间:12:10:15.666u003Cbru003E30分钟前时间:13:40:15.666u003Cbru003E500秒前时间:14:01:55.666u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cu002Fpu003Eu003Ch1 toutiao-origin=”h3″u003ELocalDateTime类u003Cu002Fh1u003Eu003Cpu003ELocalDateTime是一个不可变的日期-时间对象,它既包含了日期同时又含有时间,默认格式是yyyy-MM-u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-3″u003Eddu003Cu002Fiu003ETHH-mm-ss.zzzu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E获取当前日期时间以及自定义日期时间u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E示例代码:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003Eu002Fu002F获取当前的日期时间u003Cbru003ELocalDateTime localDateTime = LocalDateTime.now;u003Cbru003ESystem.out.println(“当前的日期时间:” + localDateTime);u003Cbru003Eu003Cbru003Eu002Fu002F获取自定义的的日期时间u003Cbru003ELocalDateTime specifiedDateTime = LocalDateTime.of(LocalDate.now, LocalTime.now);u003Cbru003ESystem.out.println(“自定义的日期时间:” + specifiedDateTime);u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E运行结果:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003E当前的日期时间:2018-12-12T14:31:00.163u003Cbru003E自定义的日期时间:2018-12-12T14:31:00.1u003Ci class=”chrome-extension-mutihighlight chrome-extension-mutihighlight-style-3″u003E64u003Cu002Fiu003Eu003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003Eu003Cstrongu003E转化为日期和时间u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E代码示例:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003Eu002Fu002F转化为LocalDate和LocalTimeu003Cbru003ELocalDate localDate = localDateTime.toLocalDate;u003Cbru003ELocalTime localTime = localDateTime.toLocalTime;u003Cbru003ESystem.out.println(“当前日期:” + localDate);u003Cbru003ESystem.out.println(“当前时间:” + localTime);u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cpu003E运行结果:u003Cu002Fpu003Eu003Cpreu003Eu003Ccodeu003E当前日期:u003Cstrong toutiao-origin=”span”u003E2018-12-12u003Cu002Fstrongu003Eu003Cbru003E当前时间:u003Cstrong toutiao-origin=”span”u003E14u003Cu002Fstrongu003E:31:00.163u003Cu002Fcodeu003Eu003Cu002Fpreu003Eu003Cp class=”pgc-end-source”u003E【END】u003Cu002Fpu003E”

原文始发于:Java8 新特性之日期-时间 API

主题测试文章,只做测试使用。发布者:逗乐男神i,转转请注明出处:http://www.cxybcw.com/17740.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code