JAVA_获取每年、每季度的第一天,最后一天_一蓑烟雨任平生

Calendar类根据指定日期获取年,季度,月 在这里插入代码片 Date dateStr=new Date (); //本月第一天 Date fristdata=getTimesMonthmorning(dateStr); String fristdatastr=DateUtils.getDatatoString(fristdata); System.out.println(fristdatastr); //本月最后一天 Date lostdata=getTimesMonthnight(dateStr); String lost 阅读详情

啪啪啪的写了一大堆,具体写的啥我也没看懂

记录一下吧,下次没准用到了翻翻自己的博客

程序员的逻辑:一步一个脚印,走完发现感觉不像自己走的

代码量很多,过程很复杂,思路很清晰,可能大佬有更简单的方法

废话不多说了,直接上代码

工具类
 /**
     * 用途:以指定的格式格式化日期字符串
     *
     * @param pattern     字符串的格式
     * @param currentDate 被格式化日期
     * @return String 已格式化的日期字符串
     * @throws NullPointerException 如果参数为空
     */
    public String formatDate(Date currentDate, String pattern) {
        if (currentDate == null || "".equals(pattern) || pattern == null) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.format(currentDate);
    }

    public String[] getCurrQuarter(int num) {
        String[] s = new String[2];
        String str = "";
        // 设置本年的季
        Calendar quarterCalendar = null;
        switch (num) {
            case 1: // 本年到现在经过了一个季度,在加上前4个季度
                quarterCalendar = Calendar.getInstance();
                quarterCalendar.set(Calendar.MONTH, 3);
                quarterCalendar.set(Calendar.DATE, 1);
                quarterCalendar.add(Calendar.DATE, -1);
                str = DateUtils.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd");
                s[0] = str.substring(0, str.length() - 5) + "01-01";
                s[1] = str;
                break;
            case 2: // 本年到现在经过了二个季度,在加上前三个季度
                quarterCalendar = Calendar.getInstance();
                quarterCalendar.set(Calendar.MONTH, 6);
                quarterCalendar.set(Calendar.DATE, 1);
                quarterCalendar.add(Calendar.DATE, -1);
                str = DateUtils.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd");
                s[0] = str.substring(0, str.length() - 5) + "04-01";
                s[1] = str;
                break;
            case 3:// 本年到现在经过了三个季度,在加上前二个季度
                quarterCalendar = Calendar.getInstance();
                quarterCalendar.set(Calendar.MONTH, 9);
                quarterCalendar.set(Calendar.DATE, 1);
                quarterCalendar.add(Calendar.DATE, -1);
                str = DateUtils.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd");
                s[0] = str.substring(0, str.length() - 5) + "07-01";
                s[1] = str;
                break;
            case 4:// 本年到现在经过了四个季度,在加上前一个季度
             quarterCalendar = Calendar.getInstance();
                quarterCalendar.add(Calendar.YEAR, -1);
                quarterCalendar.set(Calendar.MONTH, 12);
                quarterCalendar.set(Calendar.DATE, 1);
                quarterCalendar.add(Calendar.DATE, -1);
                str = DateUtils.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd");
                s[0] = str.substring(0, str.length() - 5) + "10-01";
                s[1] = str;
                break;
        }
        return s;
    }

    /**
     * 获取某年第一天日期
     *
     * @param year 年份
     * @return Date
     */
    public Date getYearFirst(int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        Date currYearFirst = calendar.getTime();
        return currYearFirst;
    }

    /**
     * 获取某年最后一天日期
     *
     * @param year 年份
     * @return Date
     */
    public Date getYearLast(int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        calendar.roll(Calendar.DAY_OF_YEAR, -1);
        Date currYearLast = calendar.getTime();

        return currYearLast;
    }
获取开始结束日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        Date startTime = null;
        Date endTime = null;
        //获取年
        int year = cal.get(Calendar.YEAR);
        //获取当前月
        int month = cal.get(Calendar.MONTH) + 1;
        try {
            if (assessPeriod.equals("季度")) {
                if (month == 1 || month == 2 || month == 3) {
                    String[] quarter = DateUtils.getCurrQuarter(4);
                    startTime = sdf.parse(quarter[0]);
                    endTime = sdf.parse(quarter[1]);
                } else if (month == 4 || month == 5 || month == 6) {
                    String[] quarter = DateUtils.getCurrQuarter(1);
                    startTime = sdf.parse(quarter[0]);
                    endTime = sdf.parse(quarter[1]);
                } else if (month == 7 || month == 8 || month == 9) {
                    String[] quarter = DateUtils.getCurrQuarter(2);
                    startTime = sdf.parse(quarter[0]);
                    endTime = sdf.parse(quarter[1]);
                } else {
                    String[] quarter = DateUtils.getCurrQuarter(3);
                    startTime = sdf.parse(quarter[0]);
                    endTime = sdf.parse(quarter[1]);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (assessPeriod.equals("半年")) {
            try {
                //获取月份
                if (month > 6) {
                    //获取上半年的第一天
                    startTime = DateUtils.getYearFirst(year);
                    endTime = sdf.parse((year) + "-06-30");
                } else {
                    //获取去年下半年的起始日期
                    startTime = sdf.parse((year - 1) + "-06-30");
                    endTime = DateUtils.getYearLast(year - 1);
                }
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        if (assessPeriod.equals("一年")) {
            //获取上一周期年的第一天
            startTime = DateUtils.getYearFirst(year - 1);
            //获取上一周期年的最后一天
            endTime = DateUtils.getYearLast(year - 1);
        }
5分钟搞懂Paris公式:如何用裂纹扩展速率预测零件寿命(附Python代码示例) 本文详细介绍了Paris公式在裂纹扩展速率预测零件寿命中的应用,通过Python代码示例展示了从理论到实践的完整流程。文章涵盖了Paris公式的工程本质、寿命预测计算流程、几何修正因子选择以及实际案例演示,帮助工程师快速掌握这一关键技术。 阅读详情

相关推荐

Xilinx PCIe IP核示例工程仿真流程与关键任务解析

本文详细解析了Xilinx PCIe IP核示例工程的仿真流程与关键任务。通过搭建仿真环境、解读初始化日志,并深入剖析TSK_TX_MEMORY_WRITE_32等核心任务的TLP报文生成与交互过程,帮助开发者掌握PCIe IP核的仿真调试方法,为实际硬件设计提供可靠的验证基础。

weixin_28314575的博客 504

java获取给定日期当前周当前月当前季度的第一天和最后一天

实现方式分别采用jdk7的Calendar和jdk8的LocalDate Calendar实现 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 根据给定时间获取周、月度、季度、年度开始结束时间 * @author wsp */ public class DateCalendarUtil { /

crazywsp的博客 7025

数据讲述中国故事!和鲸助力中国综合社会调查(CGSS)数据分析与可视化大赛圆满收官

用数据研究中国问题、总结中国道路、讲述中国故事。和鲸作为协办单位全程支持本次大赛,为中国人民大学中国调查与数据中心实施全套赛事系统,同时提供完备而周全的赛事运营服务。

ModelWhale的博客 1410

java获取季度日期

1:获取季度第一天和最后一天 2:获取季度

blood_Z的博客 1万+

正点原子ATK-LORA-01无线串口代码移植+STM32F103C8T6(标准库)

目录 一、ATK-LORA-01无线串口资料 二、代码移植 1.分析 (1)usart3(也可以是其他的串口)用于接收数据的串口 usart.h (2)time3(也可以是其他的定时器)用于时序的设置 (3)lora.c 三、演示 1.主机(发送方) (1)主机接线 (2)主机代码(发送方) (3)主机实物 插上无线串口通电即可发送​ 2.从机(接收方) (1)从机接线(LORA与主机相同) (2)从机代码(接收方) (3)从机实物 接上TTL和LORA并通电即...

m0_56942354的博客 8963

ST-LINK调试原理与STM32硬件连接实战指南

嵌入式调试器是连接开发环境与物理MCU的核心枢纽,其本质是基于ARM CoreSight架构的实时硬件观测与控制接口。它通过JTAG或SWD协议访问内核寄存器、内存及外设,实现断点、单步、内存监视等深度调试能力,远超简单程序烧录功能。ST-LINK作为主流ARM Cortex-M调试器,支持SWD(2线)与JTAG(多线)双模式,在电平匹配、复位控制、引脚复用规避等硬件层面临关键工程约束。掌握VREF参考电压配置、nSRST硬复位接线、调试引脚隔离策略及Keil MDK调试会话配置,是保障STM32稳定联机

weixin_42596214的博客 308

Java使用LocalDate获取当前时间的上一年、下一年、上个月、下个月、前一天,当天,本周,上周,本季度,上季度等(时间格式化)

Java使用LocalDate获取当前时间的上一年、下一年、上个月、下个月、前一天,当天,本周,上周,本季度,上季度等(时间格式化)

benm_____的博客 4185

Zynq UltraScale+ MPSoC-AMP(linux+裸机)

接着 Zynq UltraScale+ MPSoC-双核裸机AMP继续 平台工具:zcu106,vitis2020.2,petalinux2019.2 文章目录1.cpu1跑裸机2.cpu0跑linux2.1petalinux设置2.2 app3.生成BOOT.bin4.zcu106测试 1.cpu1跑裸机 参照Zynq UltraScale+ MPSoC-双核裸机AMP建立的工程进行修改。BSP中stdin与out修改为uart1,uart1给裸机用,uart0给linux用。 ddr空间裸机与linu

zhuxl24的博客 5195

java指定日期的季度以及季度第一天和最后一天(季度统计报表)

java指定日期的季度以及季度第一天和最后一天(季度统计报表)

liaomingwu的专栏 6074

基于CrossSim的存储硬件原型机ANN仿真:MNIST手写数字识别实现与分析

本项目基于CrossSim仿真平台,在存储硬件原型机上实现了MNIST手写数字识别的ANN模型。通过搭建CrossSim仿真环境,设计传统ANN基准模型和考虑硬件非理想特性的CrossSim模型,对比分析了不同配置下的识别性能。实验结果表明,在引入硬件噪声和器件变异的情况下,模型准确率仍能达到95%以上,验证了存储内计算架构的可行性。研究为存储硬件与计算单元融合提供了实验依据,展示了CrossSim在神经形态计算系统仿真中的实用价值。

huanghm88的专栏 594

工业相机的检测原理课件(建议收藏)

本课件为各位工程师详细介绍了工业相机的视觉检测原理 ,旨在为工程师调试工业相机的视觉检测原理时提供理论性指导。

Bamboo265925的博客 498

oracle 每季度第一天,oracle获得每周,每月,每季度,每年的第一天

当前年月日SELECT trunc(sysdate) , trunc(sysdate,'dd')FROM dual当年第一天SELECT trunc(sysdate,'yyyy')FROM dual当月第一天SELECT trunc(sysdate,'mm')FROM dual当周第一天SELECT trunc(sysdate,'d')FROM dual当前季度第一天,下一季度第一天SELECT ...

weixin_34676828的博客 3366

QCC304x系列开发教程(实战篇)之5.2 QCC3040之提示音

earbud_init.c中,初始化table中UiPrompts_Init /*! \brief Table of initialisation functions */ static const init_table_entry_t appInitTable[] = { ......... {UiPrompts_Init, 0, NULL}, ......... } ui_prompts.c中是提示音音处理的主要逻辑和配置源文件 函数static void uiPro...

心跳包的博客 2391

calendar 获取季度的第一天_java获取每季度开始和结束日期

//获取当前季度public static String getQuarter() {Calendar c = Calendar.getInstance();int month = c.get(c.MONTH) +1;int quarter =0;if (month >=1 && month <=3) {quarter =1;}else if (month >=4...

weixin_34185396的博客 1542

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

java 获取周、月、年的第一天以及最后一天的详细代码

这个周、月、年是经常在开发中可以用的,比如说取报表的数据等等,所有掌握如何取得这个时间的范围是非常关键的...

IT 民工 655

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java按照每日,每周,每月,每季度,每半年,每年计算周期

1. 通过传入计划的开始时间 - 截止时间 , 自动计算出今日所在是第几周期, 并返回当前周期的开始时间的结束时间。

dongyan3595的博客 800

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java计算时间段内的一些特殊日期,及差值

java计算2个日期内的一些特殊日期,及差值 1.首先计算日期时间段内每月1号直到结束日期 String start="2019-11-01"; String end="2020-03-31"; //转格式为java.util.Date Date startDate = DateFormat.parseDate(start,DateFormat.DT_YYYY_MM_DD); Date endDate = DateFormat.parse

dmlcq的博客 670

java定时器每月第一天,javaSpring定时器每个季度执行一次

spring源码深度解析第2版+教材128.5元包邮(需用券)去购买 >@Scheduled(cron = " 0 00 00 1 4,7,10,1 ?")//每个季度的第一天零点进行统计此注解是每个季度结束后的下一天执行(因为Spring不识别字母(L---每月最后一天))所以只能采用下个月的第一天以下代码针对时间进行处理Calendar cal = Calendar.getInstanc...

weixin_39699746的博客 1311

spring定时任务cron为每季度第一个工作日转换为cron表达式

最近系统有个需求,执行一个定时任务发送待办事项,一年有六次,分别为每季度第一个工作日、第二季度和第四季度结束后的第十个工作日,可头疼坏了 还好我们系统有个工作日表,于是思路就是先查询出每季度的第一天,然后在表里查出大于此日期的第一个工作日,然后利用cronUtil转换成cron表达式,开启定时任务就ok了。 下面附上查询季度第一天的sql /* 本季度的第一天 */ concat(year(curdate()),'-',elt(quarter(curdate()),1,4,7,10),'-',1) /*

success321的博客 4658

每年发布两个Java功能:Oracle提出新的基于时间的模型

本月初 ,我们与Java冠军Stephen Colebourne讨论了Java 9,Jigsaw项目以及他希望在Java 10中看到的内容。“我希望Java 10的发布速度比Java 9快得多。” Stephen说道–没有惊喜。 许多用户认为等待新版本太长。 既然Java 9即将面世,用户可能想知道要等到下一个版本才需要多少时间。 事实证明,历史特征驱动的发布模型即将成为“良好的”历史。 ...

135

Java 获取指定日期范围内的每个月,每季度,每一年

/** *根据时间范围获得月份集 * @return */ public static List<String> getRangeSet(String beginDate,String endDate){ /* Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于等于时,返...

qq_33348135的博客 2061

java按季还款_Java 获取指定日期范围内的每个月,每季度,每一年

/***根据时间范围获得月份集* @return*/public static List getRangeSet(String beginDate,String endDate){/* Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于等于时,返回false;Date1.before(Date2),当Date1小于Date2时,返回TRUE,当大于等...

weixin_33831535的博客 406

oracle 按每天,每周,每月,每季度,每年查询统计数据

oracle 按每天,每周,每月,每季度,每年查询统计数据 //按天统计 select count(dataid) as 每天操作数量, sum() from tablename group by trunc(createtime, 'DD')) //按自然周统计  select to_char(date,'iw'),sum()  from  tablename group by to_...

ljx_1997的博客 794

ZeroC(笨小孩)写的一个类,关于日期

package pbcenter.util;import java.util.Calendar;import java.sql.Date;import java.text.SimpleDateFormat;import java.text.ParseException;/** * Utility to date time * @version 0.1 * @author Super Zha

1295

java获取指定年月往前推12个月的年月_Java 获取指定日期范围内的每个月,每季度,每一年...

/***根据时间范围获得月份集* @return*/public static List getRangeSet(String beginDate,String endDate){/* Date1.after(Date2),当Date1大于Date2时,返回TRUE,当小于等于时,返回false;Date1.before(Date2),当Date1小于Date2时,返回TRUE,当大于等...

weixin_39849418的博客 1321

按季还款java_oracle 按每天,每周,每月,每季度,每年查询统计数据

oracle 按每天,每周,每月,每季度,每年查询统计数据//按天统计select count(dataid) as 每天操作数量, sum()from tablenamegroup by trunc(createtime, 'DD'))//按自然周统计select to_char(date,'iw'),sum()from tablenamegroup by to_char(date,'iw')...

weixin_39588223的博客 110
上一篇: Java>>MyBatis>>Mysql>>like>特殊符号/____一蓑烟雨任平生
下一篇: Python自动生成金钱豹收款码_一蓑烟雨任平生
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值