网站首页 > java教程 正文
假设我们通过这个简单的类来表示一个季度的第一天和最后一天:
public final class Quarter {
private final Date firstDay;
private final Date lastDay;
// ...
}
接下来,我们有一个`java.util.Date`对象,我们想要获取包含这个日期的季度的第一天和最后一天。为此,我们可以使用JDK 8中的`IsoFields.DAY_OF_QUARTER`(我们在上一个问题中介绍了`IsoFields`)。但是,在使用`IsoFields`之前,我们必须将给定的`java.util.Date`转换为`LocalDate`,如下所示:
LocalDate localDate = date.toInstant()
.atZone(ZoneId.systemDefault()).toLocalDate();
一旦我们将给定的`Date`转换为`LocalDate`,我们就可以通过`IsoFields.DAY_OF_QUARTER`轻松提取季度的第一天。接下来,我们向这个日期添加2个月,以移动到季度的最后一个月(一个季度有3个月,所以一年有4个季度),并依赖于`java.time.temporal.TemporalAdjusters`,更确切地说是`lastDayOfMonth()`来获取季度的最后一天。最后,我们将两个获得的`LocalDate`转换为`Date`。以下是完整的代码:
public static Quarter quarterDays(Date date) {
LocalDate localDate = date.toInstant()
.atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate firstDay
= localDate.with(IsoFields.DAY_OF_QUARTER, 1L);
LocalDate lastDay = firstDay.plusMonths(2)
.with(TemporalAdjusters.lastDayOfMonth());
return new Quarter(
Date.from(firstDay.atStartOfDay(
ZoneId.systemDefault()).toInstant()),
Date.from(lastDay.atStartOfDay(
ZoneId.systemDefault()).toInstant())
);
}
当然,如果你直接使用`LocalDate`,这些转换是不需要的。但是,这样,你有机会学到更多的东西。在打包的代码中,你可以找到更多的例子,包括一个完全依赖于`Calendar` API的例子。
猜你喜欢
- 2024-10-06 Java简单日期类型时间格式的详解(java简单日期类型时间格式的详解是什么)
- 2024-10-06 Java中常用类—日期与时间类 #java基础
- 2024-10-06 DATE #4、Java操作日期时间-②老版本使用的日期和时间类
- 2024-10-06 Java 8 中处理日期和时间示例(驾照清分日期之前要把以前的违章处理掉)
- 2024-10-06 java日期函数操作(java中日期)
- 2024-10-06 万字博文教你搞懂java源码的日期和时间相关用法
- 2024-10-06 Servlet 处理日期(servlet.session.timeout)
- 2024-10-06 第七节:详细讲解Java中的日期,java.util.date
- 2024-10-06 JavaDateTime 教程时间测量(java date timestamp)
- 2024-10-06 100个Java工具类之3:获取多种日期格式
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)