随着Java 8最终版本的发布,令我兴奋的新功能之一就是新的Date API,这是JSR 310的工作成果。 尽管Lambda表达式无疑是Java 8的一大亮点,但是拥有更好的日期处理方式无疑是受欢迎的。 这是一篇简短的文章(第2部分或第3部分的第1部分),展示了新的Date功能的一些要点,这次主要围绕LocalDate类。

创建新的日期对象

创建代表特定日期的新Date对象很容易:

LocalDate today = LocalDate.parse("2014-02-27");
//or this method
LocalDate bday = LocalDate.of(2014,3,18);

添加到日期

作为我们在Java 8中轻松处理日期的简单示例,请考虑需要在现有日期中添加天,月或年的情况。 有方法LocalDate.plusDaysLocalDate.plusWeeksLocalDate.plusMonths LocalDate.plusYears 。 还有一个通用的LocalDate.plus方法,您可以在其中通过TemporalUnit类型指定要添加的数量和时间单位。 这里有一些例子:

@Testpublic void test_add_to_date() {LocalDate oneMonthFromNow = today.plusDays(30);assertTrue(oneMonthFromNow.isEqual(LocalDate.parse("2014-03-29")));LocalDate nextMonth = today.plusMonths(1);assertTrue(nextMonth.isEqual(LocalDate.parse("2014-03-27")));LocalDate future = today.plus(4, ChronoUnit.WEEKS);assertTrue(future.isEqual(LocalDate.parse("2014-03-27")));}

减去日期

要从日期减去天,周,月或年,可以使用预期的方法: LocalDate.minusDaysLocalDate.minusMonths等。以下是从日期减去的一些示例:

@Testpublic void test_subtract_from_date() {assertThat(today.minusWeeks(1).toString(), is("2014-02-20"));assertThat(today.minusMonths(2).toString(), is("2013-12-27"));assertThat(today.minusYears(4).toString(), is("2010-02-27"));Period twoMonths = Period.ofMonths(2);assertThat(today.minus(twoMonths).toString(), is("2013-12-27"));}

在此示例中,我们还介绍了Period对象。

确定日期之间的差异

可以争辩说,获取两个日期之间的差异是处理Java 8之前的日期最痛苦的操作。新的Date API使使用LocalDate.until同样容易地确定日期之间的天数,周数,月数或年数。方法:

@Testpublic void test_get_days_between_dates() {LocalDate vacationStart = LocalDate.parse("2014-07-04");Period timeUntilVacation = today.until(vacationStart);assertThat(timeUntilVacation.getMonths(), is(4));assertThat(timeUntilVacation.getDays(), is(7));assertThat(today.until(vacationStart, ChronoUnit.DAYS), is(127L));LocalDate libraryBookDue = LocalDate.parse("2000-03-18");assertThat(today.until(libraryBookDue).isNegative(), is(true));assertThat(today.until(libraryBookDue, ChronoUnit.DAYS), is(-5094L));LocalDate christmas = LocalDate.parse("2014-12-25");assertThat(today.until(christmas, ChronoUnit.DAYS), is(301L));}

在此示例中,我们再次看到了Period对象的使用。

结论

我们结束了对LocalDate和Java 8 Date API的快速浏览。 显然,在Java 8中使用日期和时间还有很多发现,本文只是快速的介绍。 谢谢你的时间。

资源资源

  • Joda Time Java日期时间库,用于Java版本<8
  • java.time包包含本文中讨论的类的Java文档。
  • Java 8中的函数式编程是使用Java 8中新功能组件的重要资源
  • 这篇文章的源代码
参考:来自Java CG 合作伙伴 Bill Bejeck的Java 8的新功能– Date API ,该文章来自Random Thoughts On Coding博客。

翻译自: https://www.javacodegeeks.com/2014/03/whats-new-in-java-8-date-api.html

Java 8 – Date API的新增功能相关推荐

  1. Java EE:异步构造和功能

    介绍 Java EE具有许多API和构造以支持异步执行. 从可伸缩性和性能的角度来看,这是至关重要的. 让我们假设2个模块相互交互. 当模块A (发送方)以同步方式向模块B (接收方)发送消息时,通信 ...

  2. Java8 Date API 详解 - LocalDate,LocalDateTime,Instant

    转载来源:https://www.journaldev.com/2800/java-8-date-localdate-localdatetime-instant Java8 Date API 详解 - ...

  3. java中date如何获取月份_Java:从Date获取月份整数

    如何从Date对象(java.util.Date)获取整数作为整数? 实际上,Date上的getMonth()因为永远而被弃用;) @slhck:已弃用. 从JDK 1.1版开始,由Calendar. ...

  4. java 1.8新增功能_睡觉时:新增的Java 8新增功能

    java 1.8新增功能 自Java 8推出以来,最有趣的功能是什么? Java 8最近庆祝了它的第一个生日,其主要版本已经在一年多以前了. 这当然值得庆祝. 自从最初的Java 8版本问世以来,已经 ...

  5. 更深入地了解Java 8 Date and Time API

    在这篇文章中,我们将更深入地了解通过Java 8获得的新的Date / Time API( JSR 310 ). 请注意,本文主要由显示新API功能的代码示例驱动. 我认为这些示例是不言自明的,因此我 ...

  6. java 1.8新增功能_Java 8的新增功能(第二部分-可能会出现什么)

    java 1.8新增功能 免责声明:我不为Oracle工作,也不以任何方式代表Oracle. 此功能列表不是官方的. 作为"局外人",这只是我研究的一部分. 这是由三部分组成的系列 ...

  7. 睡觉时:新增的Java 8新增功能

    自Java 8推出以来,最有趣的功能是什么? Java 8最近庆祝了它的第一个生日,而主要版本刚刚一年多前发布. 这当然值得庆祝. 自从最初的Java 8版本问世以来,已经发布了六个更新. 这些更新中 ...

  8. Java 8的新增功能(第二部分–可能会出现什么)

    免责声明:我不为Oracle工作,也不以任何方式代表Oracle. 此功能列表不是官方的. 作为"局外人",这只是我研究的一部分. 这是由三部分组成的系列文章的第二部分. 在第一部 ...

  9. java 百度api人脸识别功能(人脸识别+详细案例+接口及所需工具类)

    最近开发过程中需要用到人脸识别认证功能,然后就用的是百度API接口进行开发,起初设想用直接用人脸识别还是用注册到百度人脸库识别两种方法,为了简化开发直接就用了第一种方式: 直接上业务逻辑代码吧: po ...

最新文章

  1. java b2b 开源_springcloud微服务多用户商城系统java_代码开源_B2B电商系统_B2C电商系统...
  2. 网易云音乐IPO现场:丁石石石石石石石石石敲钟
  3. python安装numpy-如何为python安装numpy和scipy?
  4. vue——组件之elementTable组件再封装
  5. 机器人水库涵洞检测_2019 届高三上学期期末教学质量检测原创卷 03
  6. OpenMP入门教程(一)hello world
  7. 两个python文件怎么联系在一起_【新手求助】怎样把两个程序连接在一起?老师作业,谢谢啦...
  8. Objective-C 日记⑤ 内存管理、协议、Category 视频笔记
  9. 14 FI配置-财务会计-定义未结清过帐期间变式
  10. iQOO手机正式发布,全新性能旗舰打造爆燃体验
  11. Solana生态项目DEX聚合器Dagg trade完成种子轮融资,credence.fund投资
  12. zookeeper资料
  13. 矩阵运算_SLAM中用到的矩阵计算_基本公式及知识汇总
  14. 曲面化原理创新设计_女裤制版要多久创新服务
  15. 管家婆服务器端口修改,211端口被占用,如何设置
  16. Pandownload 百度网盘光速下载 十分简单 一秒破解
  17. 微信40125错误的坑
  18. 淘金网UCskype客服系统
  19. WinForm messagebox 确定取消按钮事件
  20. 高德地图之周边搜索和路线规划

热门文章

  1. python监听剪贴板_Python监听剪切板实现方法代码实例
  2. tomcat(2)一个简单的servlet容器
  3. 段描述符表(GDT+LDT)的有感
  4. 英文连词_连词我们…讨厌
  5. Quarkus的其他(非标准)CDI功能
  6. 使用Quarkus调试容器中的系统测试(视频)
  7. 怎样使set现程变得安全_使不安全变得更加安全
  8. jersey客户端_项目学生:带有Jersey的Web服务客户端
  9. 休眠面试问答-最终清单
  10. js实现日历框上一日下一日_一日三项令人兴奋的Lucene功能