在java8中引入了新的日期和时间库,整合了很多Joda-Time的一些特性。
1)LocalDate + LocalTime + LocalDateTime
public void testLocalDate(){ LocalDate date = LocalDate.of(2016, 05, 22); println(date.getYear()); //2016 println(date.getMonth()); //MAY println(date.getMonthValue()); //5 println(date.getDayOfYear()); //143 println(date.getDayOfMonth()); //22 println(date.getDayOfWeek()); //SUNDAY println(date.lengthOfYear()); //366 println(date.lengthOfMonth()); //31 println(date.isLeapYear()); //true println(date.now()); //2016-05-22 println(date.toEpochDay()); //16943 LocalDate d = date.parse("2016-05-22"); //此处指允许使用ISO_LOCAL_DATE格式 println(d); } public void testLocalTime(){ LocalTime time = LocalTime.of(13, 04); println(time.getHour()); //13 println(time.getMinute()); //4 println(time.getSecond()); //0 println(time.getNano()); //0 time = LocalTime.parse("13:04:59"); //此处也只允许使用ISO_LOCAL_TIME格式 println(time); } public void testLocalDateTime(){ LocalDate date = LocalDate.of(2016, 05, 22); LocalTime time = LocalTime.of(13, 04); LocalDateTime ldt = LocalDateTime.of(date, time); }
2)Duration(持续时间) + Period(一段时间)
public void testDurationAndPeriod(){ println(Duration.ofDays(7)); // PT168H println(Duration.ofMinutes(7)); // PT7M println(Duration.of(7, ChronoUnit.DAYS)); // PT168H println(Period.ofDays(7)); // P7D println(Period.ofWeeks(7)); // P49D println(Period.of(1, 1, 7)); // P1Y1M7D }
还包含以下其他的方法:
between: 创建两个时间点之间的interval(间隔)。
from: 由一个临时时间点创建interval。
of: 由它的组成部分创建interval。
parse: 由字符串创建interval。
addTo: 创建该interval的副本,并将其叠加到某个指定的temporal对象。
get: 读取该interval的状态。
isNegative: 检查该interval是否为负值,不包含0。
isZero: 检查该interval的时长是否为0。
minus: 通过减去一定的时间创建该interval的副本。
multipliedBy: 将interval的值乘以某个标量创建该interval的副本。
negated: 以忽略某个时长的方式创建该interval的副本。
plus: 以增加某个指定时长的方式来创建该interval的副本。
subtractFrom: 以指定的temporal对象减去该interval。
3)LocalDate对象的相关操作
public void testLocalDateOperation(){ LocalDate date = LocalDate.of(2016, 05, 22); // 以绝对方式修改 date = date.withYear(2017); println(date); // 2017-05-22 date = date.withMonth(10); println(date); // 2017-10-22 date = date.withDayOfMonth(7); println(date); // 2017-10-07 // 以相对方式修改 date = date.plusYears(3); println(date); // 2020-10-07 date = date.minusMonths(9); println(date); // 2020-01-07 date = date.plusDays(6); println(date); // 2020-01-13 }
还可以使用java.time.temporal.TemporalAdjusters来进行操作:
dayOfWeekInMonth: 返回同一个月中第x周的第y天,x为负数,则表示相对当前天的上一周。
firstDayOfMonth: 返回当前月的第一天。
firstDayOfNextMonth: 返回下个月的第一天。
firstDayOfNextYear: 返回下年的第一天。
firstDayOfYear: 返回当年的第一天。
firstInMonth: 返回同一个月中,第一个符合指定星期数的日期。
lastDayOfMonth: 返回下个月的最后一天。
lastDayOfYear: 返回今年的最后一天。
lastInMonth: 返回同一个月中,最后一个符合指定星期数的日期。
next/previous: 返回当前日期向前或向后,第一个符合指定星期数的日期(不包含自己)。
nextOrSame/previousOrSame: 在上一条的基础上,把当前日期值(自己)也放进去计算。
还有一些比如时区、历法这些的就不介绍了。
相关推荐
Java 记录随笔 Java 记录随笔是关于 Java 软件架构设计的笔记,涵盖了软件架构的基本原则、当前流行的技术、数据库存储结构、Web 界面用户接口层、业务层架构、持久层技术、XML 结构化信息传输和存储的重要性等多个...
JAVA_HOME="/usr/lib/jvm/java-8-oracle" PATH="$PATH:$JAVA_HOME/bin" ``` 保存并关闭文件,然后使更改生效: ```bash source /etc/environment ``` 接下来,我们需要安装MySQL 5.7。同样地,使用apt来安装: `...
每四位二进制数对应一个十进制数,如二进制的1101代表十进制的13,因为1*8 + 1*4 + 0*2 + 1*1 = 8 + 4 + 0 + 1 = 13。8421码在某些特定的数字处理场景中很有用,如电子表格软件或计算器。 Java中的位运算,如与(&)...
JavaThings - Java安全漫谈笔记相关《Java安全漫谈》是我在写的一点Java学习相关的随笔,不是很严谨,也不是啥高。这个存储库主要是记录并整理一下,附加一些代码。Java 安全漫谈目录Java安全漫谈 - 01.Java的动态...
9. **帮助文档**:附带的开发随笔手册可能包含关于如何使用该记事本的详细说明,对于初学者来说非常有帮助。 开发这样的程序需要对Java语言、SWT库以及面向对象设计有深入理解。通过这个项目,开发者不仅可以掌握...
标题“2014210-2014307笔记随笔”暗示了这是一份时间跨度从2014年2月10日至3月7日的个人学习记录,可能包含了作者在IT领域的所学所悟,特别是关于编程、软件开发或系统设计的思考。由于描述部分为空,我们无法直接...
在开发“Android App_云随笔课程设计”项目时,我们面临的是构建一个移动应用程序,旨在帮助用户便捷地记录他们的日常生活、旅行体验、心情点滴以及学习笔记等。这个应用程序的关键特性在于其同步功能,它将用户的...
JavaThings-Java安全漫谈笔记相关《 Java安全漫谈》是我在写的一点Java学习相关的随笔,不是很严谨,也不是啥高科技。这个存储库主要是记录并整理一下,附加一些代码。Java安全漫谈目录 人口统计字节码:远程字节码...
【标题】"家庭理财系统(java+applet)" 是一个基于Java和Applet技术开发的个人财务管理软件项目。这个系统旨在帮助用户跟踪、管理和规划他们的家庭财务状况,通过使用先进的编程语言和交互式技术来实现这一目标。 ...
在日常生活中,人们常常需要记录一些个人事务,比如日程安排、心情随笔、学习笔记等,一个电子日记本可以方便用户随时随地记录和查看。 该应用设计采用了模块化的设计思路,将不同的功能分离在不同的文件和模块中,...
Ibatis 是一款轻量级的Java持久层框架,它的核心思想是将SQL语句与Java代码分离,使得开发者可以更加灵活地控制SQL的编写,同时避免了传统的JDBC中的大量模板代码,提高了开发效率和代码的可维护性。在本文中,我们...
例如,可能会讲解使用如Python、C++或Java等语言进行系统开发,或者如何利用现有的开源项目如OPC-UA、Modbus等进行通信协议的实现。源码分析部分可能涉及代码调试、性能优化和错误处理等内容。 “工具”标签表明...
开发工具:六年特雷利JIDEA 基于JAVA幼儿园家园共育平台是针对幼儿园家校沟通的系统平台。 该平台面向幼儿园教师及家长,是促进家园共育的综合解决方案。它以幼儿在学前教育阶段的成长为核心,以家园互动为基础,...
Apache Log4j2 是一个广泛使用的Java日志记录库,它提供了一个强大和灵活的方式来记录应用程序事件。Log4j2手册详细介绍了该库的各个方面,包括架构、迁移、API、配置、Web应用程序集成、插件、查找、Appenders、...
在驴友社交系统中,很可能使用了MySQL作为关系型数据库存储用户信息、活动记录等数据。MySQL因其高效、稳定和开源特性而广受欢迎。开发者可能使用了JPA的Repository接口或者MyBatis框架来实现数据库的CRUD(创建、...
5. **事务处理**:在图书借阅、归还等涉及多条记录修改的操作中,MSSQL的事务处理功能确保了数据的一致性和完整性。 三、Java与MSSQL的集成 1. **JDBC连接**:Java Database Connectivity (JDBC) 是Java访问数据库...
该项目通过互联网让用户能够方便地记录和分享自己的生活点滴和心情随笔。用户可以通过浏览器访问日记本,进行文章的撰写、编辑、删除、浏览等操作。在技术实现上,Java Web 日记本使用了Java作为后端开发语言,结合...
开发团队通过随笔和分析文章的形式记录了开发过程中的经验和思考,这不仅有利于代码的维护和优化,也为未来的功能升级提供了参考。技术分析文章中提到了平台的技术选型、架构设计以及关键功能的实现策略,这些分析...
java 源码 博客 一杯82年的JAVA 大家好,我是练习时常两年半的JAVA练习生,爱好是 ...博客专用仓库,主要记录一些学习和实践的总结,感兴趣的朋友可以点个watch或star。 随笔 探索JAVA并发 从0.5到1写个RPC框架