java季度时间获取工具类

2023-10-27

1.获取当前季度 第一天或最后一天

/**
     * 获取季度 第一天或最后一天
     *
     * @param quarters 0本季度,1下季度,-1上季度 以此类推
     * @param isFirst  true获取开始时间 false获取结束时间
     * @return java.lang.String
     */
    public static ZonedDateTime getStartOrEndDayOfQuarter(long quarters, Boolean isFirst) {
        System.out.println(LocalDate.now());
        LocalDate resDate = LocalDate.now().plusMonths(quarters * 3);
        Month month = resDate.getMonth();
        Month firstMonthOfQuarter = month.firstMonthOfQuarter();
        Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
        if (isFirst) {
            resDate = LocalDate.of(resDate.getYear(), firstMonthOfQuarter, 1);
        } else {
            resDate = LocalDate.of(resDate.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(resDate.isLeapYear()));
        }
        return resDate.atStartOfDay(((ZoneId.systemDefault())));
    }

2.获取传入时间季度 第一天或最后一天

/**
     * 获取季度 第一天或最后一天
     *
     * @param isFirst true获取开始时间 false获取结束时间
     * @return java.lang.String
     */
    public static ZonedDateTime setStartOrEndDayOfQuarter(ZonedDateTime dateTime, Boolean isFirst) {
        LocalDate localDate = dateTime.toLocalDate();
        Month month = localDate.getMonth();
        Month firstMonthOfQuarter = month.firstMonthOfQuarter();
        Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
        if (isFirst) {
            localDate = LocalDate.of(localDate.getYear(), firstMonthOfQuarter,
                    1);
        } else {
            localDate = LocalDate.of(localDate.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(localDate.isLeapYear()));
        }
        return localDate.atStartOfDay((ZoneId.systemDefault()));
    }

3.测试代码

 public static void main(String[] args) {
//        System.out.println("hello");
//        ZonedDateTime currentStartQuarter = getStartOrEndDayOfQuarter(0, true);
//        System.out.println("本季度开始时间 : " + currentStartQuarter);
//        ZonedDateTime currentEndQuarter = getStartOrEndDayOfQuarter(0, false);
//        System.out.println("本季度开始时间 : " + currentEndQuarter);
//        ZonedDateTime startQuarter = getStartOrEndDayOfQuarter(-1, true);
//        System.out.println("本季度开始时间 : " + startQuarter);
//        ZonedDateTime endQuarter = getStartOrEndDayOfQuarter(-1, false);
//        System.out.println("本季度开始时间 : " + endQuarter);
        int monthValue = ZonedDateTime.now().getMonthValue();
        int dayValue = ZonedDateTime.now().getDayOfMonth();
        System.out.println(monthValue);
        System.out.println(dayValue);
        ZonedDateTime currentStartQuarter = getStartOrEndDayOfQuarter(0, true).plusMonths(+1).plusDays(+10);
        System.out.println(currentStartQuarter);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java季度时间获取工具类 的相关文章

随机推荐

  • 比较两个二叉树是否相同

    也许你看过书 也许你背过代码 都不重要 重要的是 你能将你看过的变成自己的想法 然后实现它 不在其他代码的阴影下活着 让你的代码舞动起来 也许代码可能看起来有点不简洁 思想 可以按照递归的思路进行 左子树是否相等 右子树是否相等进行遍历 b
  • Eth-Trunk链路聚合

    一 链路聚合原理 1 1 原理简述 链路聚合能够提高链路带宽 增强网络可用性 支持负载分担 链路聚合是把两台设备之间的多条物理链路聚合在一起 当做一条逻辑链路来使用 这两台设备可以是一对路由器 一对交换机 或者是一台路由器和一台交换机 一条
  • Stm32 简单实现软件调用bootloader

    最近做了个密封的设备 由于只有一个接口 该接口连接usb otg 没有串口芯片进行复位操作导致烧录相当麻烦 如果自己做IAP又会挤占那可怜的ram空间 受IAP原理触发 想到可以通过跳转的方式进入系统储存器 通过查阅手册可以发现BootLo
  • 数据库inset update返回值正常,但是数据却没有更新

    今天碰到了这件怪事 我找了好久没发现问题 从数据库用户权限到源码都看了 也没发现问题 愁了一天555 后来发现是加了事务没提交 心态崩了
  • @RabbitListener详解

    RabbitListener 是用于在 Spring AMQP 中消息监听的注解 它允许在 Spring 应用程序中声明消息监听器 在使用 RabbitListener 注解的方法上 可以接收来自 RabbitMQ 队列的消息 这些方法可以
  • 螺杆真空泵安装流程图_无油干式真空泵的选型

    无油干式真空泵有着空前的节能与环保优势 更代表未来泵业发展的一种趋势 而众多的干式无油真空泵有着不同真空参数和不同的功能区别 如何根据自身工艺特点选择那种干式无油真空泵的型号 就首先了解各种不同类型干式无油真空泵的选型知识 这样做出的选择才
  • 如何在群晖NAS中使用cpolar内网穿透

    如何在群晖nas中使用cpolar内网穿透 文章目录 如何在群晖nas中使用cpolar内网穿透 今天 我们来为大家介绍 如何在群晖系统中 使用图形化界面的cpolar cpolar经过图形化改造后 使用方法已经简便了很多 基本与其他应用软
  • vue3浏览器报错解决Uncaught runtime errors

    我们只需要在项目 vue config js 加上如下配置即可 module exports defineConfig devServer client overlay false
  • linux 内核启动参数

    Linux 内核引导选项简介 作者 金步国 版权声明 本文作者是一位开源理念的坚定支持者 所以本文虽然不是软件 但是遵照开源的精神发布 无担保 本文作者不保证作品内容准确无误 亦不承担任何由于使用此文档所导致的损失 自由使用 任何人都可以自
  • linux 读写锁应用实例

    使用读写锁实现四个线程读写一段程序的实例 共创建了四个新的线程 其中两个线程用来读取数据 另外两个线程用来写入数据 在任意时刻 如果有一个线程在写数据 将阻塞所有其他线程的任何操作 include
  • 服务器系统一键功能安装,一键安装服务器系统

    一键安装服务器系统 内容精选 换一换 公有云平台提供了一键式重置密码功能 弹性云服务器的密码丢失或过期时 如果您的弹性云服务器提前安装了一键式重置密码插件 则可以应用一键式重置密码功能 给弹性云服务器设置新密码 该方法方便 有效 建议您成功
  • OpenMV串口通讯详解

    官方教程 串口通讯上 串口通讯下 OpenMV的Uart类函数介绍 目录 材料准备 官方示例代码解析 UART 函数介绍 usart write 函数介绍 time sleep ms x 函数介绍 自己写的代码加深理解 usart any
  • java版本号比较

    public static int versionCompareTo String version1 String version2 version1 version1 null version1 replaceAll d version2
  • 单纯形法详解

    单纯形法是针对求解线性规划问题的一个算法 这个名称里的 单纯形 是代数拓扑里的一个概念 可以简单将 单纯形 理解为一个凸集 标准的线性规划问题可以表示为 min or max f x cx s t Ax b x gt 0 b gt 0 以上
  • linux篇(一)linux快速上手

    作者介绍 关于作者 东条希尔薇 一名喜欢编程的在校大学生 主攻方向 c 和linux 码云主页点我 本系列仓库直通车 作者CSDN主页地址 这是新坑的第一篇文章 也是我年前的最后一篇 作者先在这里和大家拜个早年啦 这个系列 我们将通过lin
  • mysql相除_mysql 常用函数

    流程控制函数 CASE 函数 写法 CASE value WHEN compare value THEN result WHEN compare value THEN result ELSE result END 当value等于compa
  • IntelliJ IDEA(2018)安装详解

    第一步 进入官网下载IntelliJ IDEA https www jetbrains com idea download section windows 选择适合版本下载 第二步 双击已下载文件 进行开始安装 点击 next 继续ing
  • C语言,使用非函数方法实现字符串比较

    使用非函数方法实现字符串比较 include
  • sprinboot单体项目升级成springcloud项目

    1 升级所需要的前置准备 1 把现有的服务拆分成多个模块 2 技术选型 采用Spring Cloud Alibaba 3 依照模块对应的进行升级 我将按照 引入依赖 加配置 改代码三部曲来完成模块的升级 拆分服务暂时拆分成 登录权限模块 文
  • java季度时间获取工具类

    1 获取当前季度 第一天或最后一天 获取季度 第一天或最后一天 param quarters 0本季度 1下季度 1上季度 以此类推 param isFirst true获取开始时间 false获取结束时间 return java lang