首页 > 其他分享 >如何获取周期截止时间

如何获取周期截止时间

时间:2023-06-06 15:11:56浏览次数:29  
标签:周期 cal equals MONTH 获取 reportCycle Calendar now 截止

  • 周期字符格式化
/**
     * 获取周期时间字符
     * 
     * @title
     * @description 周期类型 -1:一次性,0:每日,1:每周,2:每月,3:每季度,4:每半年,5:每年
     * @author fjh
     * @date 2023年5月31日上午11:29:54
     * @param reportCycle
     * @return
     */
    public static String getTimeType(String reportCycle) {
        LocalDate now = LocalDate.now();
        DateTimeFormatter dfDate = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        if ("0".equals(reportCycle)||"-1".equals(reportCycle)) {
            return dfDate.ofPattern("yyyy年MM月dd日").format(now);

        } else if ("1".equals(reportCycle)) {

            return dfDate.ofPattern("yyyy年ww周").format(now);
        } else if ("2".equals(reportCycle)) {

            return dfDate.ofPattern("yyyy年MM月").format(now);
        } else if ("3".equals(reportCycle)) {

            return dfDate.ofPattern("yyyy年q季度").format(now);
        } else if ("4".equals(reportCycle)) {
            int m = now.getMonth().getValue();
            int y = now.getYear();

            if (m <= 6) {
                return y + "年上半年";
            }
            return y + "年下半年";
        } else if ("5".equals(reportCycle)) {
            return dfDate.ofPattern("yyyy年").format(now);
        }

        return dfDate.format(now);
    }
  • 获取周期截止时间

 

/**
     * 截至时间
     * 
     * @title
     * @description 周期类型 -1:一次性,0:每日,1:每周,2:每月,3:每季度,4:每半年,5:每年
     * @author fjh
     * @date 2023年5月31日下午3:04:39
     * @param reportCycle
     * @return
     */
    public static Date getDeadline(String reportCycle,Integer delayNum) {

        Date lastDate = new Date();
        Calendar cal = Calendar.getInstance();
        cal.setTime(lastDate);
        if ("0".equals(reportCycle)) {//天
            cal.add(Calendar.DATE, 0);
        } else if ("1".equals(reportCycle)) {//周
            int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 1;
            if (day_of_week == 0)
                day_of_week = 7;
            cal.add(Calendar.DATE, -day_of_week + 7);
        } else if ("2".equals(reportCycle)) {//月
            cal.set(Calendar.MONTH, cal.get(Calendar.MONTH));
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        } else if ("3".equals(reportCycle)) {//季度
            int lastMonth = getQuarter(cal.get(cal.MONTH) + 1) * 3;
            cal.set(Calendar.MONTH, lastMonth - 1);
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        } else if ("4".equals(reportCycle)) {//半年
            int m = cal.get(cal.MONTH) + 1;
            if (m <= 6) {
                cal.set(Calendar.MONTH, 6 - 1);
                cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
            } else {
                cal.set(Calendar.MONTH, 12 - 1);
                cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
            }
        } else if ("5".equals(reportCycle)) {//年
            cal.set(Calendar.MONTH, 12 - 1);
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        } else if ("-1".equals(reportCycle)) {//一次性
            if(delayNum!=null)cal.add(Calendar.DATE, delayNum);
        }
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        lastDate = cal.getTime();
        return lastDate;
    }

    /**
     * 获取季度
     * 
     * @title
     * @description
     * @author fjh
     * @date 2023年5月31日下午3:01:09
     * @return
     */
    public static int getQuarter(int month) {
        int quarter = 0;
        if (month >= 1 && month <= 3) {
            quarter = 1;
        } else if (month >= 4 && month <= 6) {
            quarter = 2;
        } else if (month >= 7 && month <= 9) {
            quarter = 3;
        } else {
            quarter = 4;
        }
        return quarter;
    }

 

标签:周期,cal,equals,MONTH,获取,reportCycle,Calendar,now,截止
From: https://www.cnblogs.com/my-secret-base/p/17460604.html

相关文章

  • 如何通过抖音订单API接口获取订单详情
    要通过抖音订单API接口获取订单详情,您需要进行以下步骤:1.获取AccessToken:使用APPID和APPSecret调用获取AccessTokenAPI接口来获取您的AccessToken。2.获取订单列表:使用订单查询API接口传递AccessToken和其他查询参数来查询订单列表并获取订单ID。3.获取订单详情:使用订单......
  • Maven project 中,运行时获取某依赖的版本号
    <dependency> <groupId>cn.xs</groupId> <artifactId>qishi-api</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>  // D:\mvnrepository\cn\xs\qishi-api\0.0.1-SNAPSHOT\qishi-api......
  • bean的生命周期
    执行无参构造器,创建了bean实例调用了set方法,设置了属性值执行了初始化的方法获得了创建bean实例对象执行了销毁的容器的方法packagecom.guodaxia.bean.lifttime;publicclassTestTime{Stringname;publicTestTime(){System.out.println("执行第......
  • Bean的生命周期
    1.  什么是Bean的生命周期  49Spring其实就是一个管理Bean对象的工厂。它负责对象的创建,对象的销毁等。所谓的生命周期就是:对象从创建开始到最终销毁的整个过程。什么时候创建Bean对象?创建Bean对象的前后会调用什么方法?Bean对象什么时候销毁?Bean对象的销毁前后调用什么方法?2. ......
  • C# 通过反射获取特性的值
    特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([])来描述的。特性(Attribute)用于添加元数据,如编译器指令和注释、描述、......
  • 在B站爬取坤坤的视频,并获取视频基本信息
    在B站有许多坤坤的视频,作为一名ikun,让我们写个爬虫研究一下视频的视频的名字、链接、观看次数、弹幕、发布时间以及作者。我们用selenium来实现这个爬虫,由于要获取的数据比较多,我们写几个函数来实现这个爬虫。先倒入需要用到的库,包括selenium,time,BeautifulSoup,ChromeDriver......
  • 获取字符串个数和长度
    SAP中strlen()只能计算字符串的个数,不能计算含有中文字符串的长度。FIELD-SYMBOLS:<FV>TYPESTRING.DATA:LV_SRTTYPEI.DATA:LVTYPEREFTODATA.DATA:LV_SSSSTYPECHAR255.LV_SSSS='我'.START-OF-SELECTION.CREATEDATALVTYPESTRING.ASSIGNLV->*TO<FV&g......
  • 如何获取 C#程序 内核态线程栈
    一:背景1.讲故事在这么多的案例分析中,往往会发现一些案例是卡死在线程的内核态栈上,但拿过来的dump都是用户态模式下,所以无法看到内核态栈,这就比较麻烦,需要让朋友通过其他方式生成一个蓝屏的dump,这里我们简单汇总下。二:如何生成内核态dump1.案例代码为了方便演示,来一段简单的......
  • 获取电商平台数据采集的方式|api接口|获取商品详情接口(可高并发)
    ​电商平台数据采集是指从电商平台获取各种商品、用户、订单等信息的过程。下面介绍几种常用的获取电商平台数据的方式:1.爬虫:通过爬虫技术可以直接从电商平台的网站上获取数据,包括商品的名称、价格、销量、评论等信息。但是,使用爬虫技术采集数据需要具备一定的技能,并且需要防止......
  • Spring Bean生命周期详解
    本文结合Spring源码5.1.7.RELEASE,详细分析SpringBean生命周期,包括主要流程以及Spring一系列的扩展方法,最后通过测试实例演示主要步骤。Spring提供的Bean扩展方法大致分为三类,一类是BeanPostProcessor接口,一类是BeanFactoryProcessor接口,还有一类是Aware接口。Sprin......