获取当前季度、前N个季度的值,指定时间和季度,来判断该事件是否超出了该季度

/*** @ClassName : QuarterUtil* @Description : 季度工具类*/
public class QuarterUtil {private static final String PATTERN = "yyyyMMdd";/** @Description  获取当前季度str 如:202001为2020年第一季度* @Param []* @return java.lang.String**/public static String getThisQuarter() {Calendar now = Calendar.getInstance();String quarter = null;int year = now.get(Calendar.YEAR);int month = now.get(Calendar.MONTH) + 1;if (month == 1 || month == 2 || month == 3) {quarter = "01";} else if (month == 4 || month == 5 || month == 6) {quarter = "02";} else if (month == 7 || month == 8 || month == 9) {quarter = "03";} else if (month == 10 || month == 11 || month == 12) {quarter = "04";}return year + quarter;}/** @Description  获取前N个季度的str* @Param [quarterNum] 要获取的季度个数* @return java.util.List<java.lang.String>**/public static List<String> getPastMultipleQuarters(int quarterNum) {Calendar now = Calendar.getInstance();List<String> quarters = new ArrayList<>(quarterNum);List<String> quarterCodes = new ArrayList<>();String quarter = null;for (int i = 1; i < quarterNum; i++) {String s1 = "quarter";s1 += i;quarterCodes.add(s1);}int year = now.get(Calendar.YEAR);int month = now.get(Calendar.MONTH) + 1;if (month == 1 || month == 2 || month == 3) {quarter = "01";} else if (month == 4 || month == 5 || month == 6) {quarter = "02";} else if (month == 7 || month == 8 || month == 9) {quarter = "03";} else if (month == 10 || month == 11 || month == 12) {quarter = "04";}for (int j = 0; j < quarterCodes.size(); j++) {String quarterj = quarterCodes.get(j);switch (quarter) {case "01":quarterj = (year - 1 - j / 4) + "0" + (4 - j % 4);break;case "02":if (j == 0) {quarterj = (year - 1 - j / 4) + "0" + (4 - j % 4);break;}if (j % 4 == 0) {quarterj = (year - j / 4) + "01";} else {quarterj = (year - 1 - j / 4) + "0" + (5 - j % 4);}break;case "03":if (j == 0 || j == 1) {quarterj = year + "0" + (2 - j);break;}if ((j - 1) % 4 == 0) {quarterj = (year - j / 4) + "01";} else if (j % 4 == 0) {quarterj = (year - j / 4) + "02";} else {quarterj = (year - 1 - j / 4) + "0" + (6 - j % 4);}break;case "04":if (j == 0 || j == 1 || j == 2) {quarterj = year + "0" + (3 - j);break;}if ((j - 2) % 4 == 0) {quarterj = (year - j / 4) + "01";} else if ((j - 1) % 4 == 0) {quarterj = (year - j / 4) + "02";} else if (j % 4 == 0) {quarterj = (year - j / 4) + "03";} else {quarterj = (year - 1 - j / 4) + "0" + (7 - j % 4);}break;default:break;}quarters.add(quarterj);}return quarters;}public static String formatDate(Date currentDate, String partten) {if (StringUtils.isEmpty(partten) || currentDate == null) {return null;}SimpleDateFormat sdf = new SimpleDateFormat(partten);return sdf.format(currentDate);}/** @Description  校验目标时间date,是否超过了指定季度quarter的最后一天* @Param [date, quarter]* @return boolean**/public static boolean isInQuarter(Date date, String quarter) {String[] s = new String[2];String str;String yearStr = quarter.substring(0, 4);int quarterInt = Integer.valueOf(quarter.substring(quarter.length() - 1, quarter.length()));//设置本年的季度Calendar quarterCalendar;switch (quarterInt) {case 1://当年经过了一个季度,加上前4个季度quarterCalendar = Calendar.getInstance();quarterCalendar.set(Calendar.MONTH, 3);quarterCalendar.set(Calendar.DATE, 1);quarterCalendar.set(Calendar.DATE, -1);str = formatDate(quarterCalendar.getTime(), PATTERN);s[0] = str.substring(0, str.length() - 5) + "0101";//季度第一天s[1] = str.substring(0, str.length() - 5) + "0331";//最后一天break;case 2://当年经过了二个季度,加上前3个季度quarterCalendar = Calendar.getInstance();quarterCalendar.set(Calendar.MONTH, 6);quarterCalendar.set(Calendar.DATE, 1);quarterCalendar.set(Calendar.DATE, -1);str = formatDate(quarterCalendar.getTime(), PATTERN);s[0] = str.substring(0, str.length() - 5) + "0401";//季度第一天s[1] = str.substring(0, str.length() - 5) + "0630";//最后一天break;case 3://当年经过了三个季度,加上前2个季度quarterCalendar = Calendar.getInstance();quarterCalendar.set(Calendar.MONTH, 9);quarterCalendar.set(Calendar.DATE, 1);quarterCalendar.set(Calendar.DATE, -1);str = formatDate(quarterCalendar.getTime(), PATTERN);s[0] = str.substring(0, str.length() - 5) + "0701";//季度第一天s[1] = str.substring(0, str.length() - 5) + "0930";//最后一天break;case 4://当年经过了四个季度,加上前一个季度quarterCalendar = Calendar.getInstance();quarterCalendar.set(Calendar.MONTH, 3);quarterCalendar.set(Calendar.DATE, 1);quarterCalendar.set(Calendar.DATE, -1);str = formatDate(quarterCalendar.getTime(), PATTERN);s[0] = str.substring(0, str.length() - 5) + "1001";//季度第一天s[1] = str.substring(0, str.length() - 5) + "1231";//最后一天break;default:break;}int targetQuarterLastDay = Integer.valueOf(yearStr + s[1].substring(s[1].length() - 4, s[1].length()));int targetDate = Integer.valueOf(formatDate(date, PATTERN));if (targetDate > targetQuarterLastDay) {return false;}return true;}
}

获取当前季度、前N季度、判断时间是否超出该季度相关推荐

  1. 判断时间是第几季度的sql函数

    判断时间是第几季度的sql函数 @DATE为时间字段 QUARTER ( @DATE )=1 第1季度 QUARTER ( @DATE )=2 第2季度 QUARTER ( @DATE )=3 第3季 ...

  2. php最大输入时间,php 根据输入的参数,获取上季度最后一个月的时间

    public function getTime( $time ='2017-06-01 00:00:00'){ $month = date('m',strtotime($time)); $season ...

  3. 获取 本周本月本季度本年开始时间和结束时间

    获取 本周本月本季度本年开始时间和结束时间 转载连接:https://blog.csdn.net/Augus3344/article/details/51015704

  4. php 获取季度起始日期,php获取昨天、今天、上周、本周、上月、本月、上季度、本季度、今年的起始时间...

    //今天开始时间 $beginToday= date("Y-m-d H:i:s",mktime(0,0,0,date('m'),date('d'),date('Y'))); //今 ...

  5. moment常用操作(获取当前年/季度/月/日、上一年/季度/月/日、下一年/季度/月/日、某年/月/季度的开始和结束时间)

    Moment.js官网:文档 | Moment.js中文网 以下是相关功能介绍: 当前月: moment().format('MM') 当前季度: moment().quarter() 当前年: mo ...

  6. Java 获取当前时间的前几分钟的时间点的方法

    问题描述 有时候比如知道当前时间是 12:25:12, 先获取5分钟前的时间即分钟数-5为12:20:12 但是如果时间是12:03:12, 前五分钟为11:58:12, 获取就开始要判断了,如果获取 ...

  7. JS 获取 今日、昨日、本周、本月、本季度、本年、上月、上周、上季度、去年...

    /** * 日期范围工具类 */ var dateRangeUtil = (function () {/**** 获得当前时间*/this.getCurrentDate = function () { ...

  8. python获取一个月之前日期_Python 获取几天前的时间

    Python 获取几天前的时间 计算几天前并转换为指定格式.import time import datetime # 先获得时间数组格式的日期 threeDayAgo = (datetime.dat ...

  9. java 1个月前_java获取一个月前的时间

    java获取一个月前的时间 方法一: SimpleDateFormat formatter = new SimpleDateFormat( "yyyyMMdd" ); Date c ...

最新文章

  1. c#自定义控件窗体Click无法点击Lable的处理解决方案
  2. c++构建工具之shell,configure,make,cmake,scons,xmake简析总结
  3. 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
  4. SAP CRM系统订单模型的设计与实现
  5. Android Studio 打开activity_main.xml不能正常显示
  6. 游戏桌面壁纸|英雄联盟,热爱游戏的朋友看这里
  7. mysql计算相邻的差值_MySQL如何计算相邻两行某列差值
  8. C#Repeater控件的使用
  9. 实现全排列的另一种方法(续)
  10. Asp.Net MVC 模型(使用Entity Framework创建模型类)1
  11. Word怎么删除背景颜色
  12. html 自动打开超链接,JS、html打开超链接的几种形式
  13. 斯皮尔曼相关系数范围_Spearman Rank(斯皮尔曼等级)相关系数及MATLAB实现
  14. bootstrap手风琴_快速提示:如何自定义Bootstrap 4的手风琴组件
  15. 微信6个新表情衍生职场好戏,『程序员』版也太太太真实了吧……
  16. SuperMap 地图裁剪
  17. 重邮计算机专业取得奖项,重邮邹宇航:保研北大,囊括国内外40余个重量级奖项的科创达人...
  18. news html5 qq,WebQQ全面升级支持IE9 HTML5无处不在
  19. 百度搜索:高效使用技巧
  20. STC89C52RC40I-LQFP44简介

热门文章

  1. 郑州大数据 数据培训学校新动态
  2. ctfshow _新春欢乐赛
  3. 腾讯CSIG暑期后端实习面经(已offer)
  4. 使用Wappalyzer 分析页面
  5. 推荐:一个画出高大上的机器学习图的神器(论文必备)
  6. java 最简易记事本,带详细注释,仅供参考!
  7. 学java记不住单词怎么办_【英语单词和句子记不住怎么办?我很想学好英语,但是记不住句子和单词.】作业帮...
  8. 将指定文件压缩到指定位置
  9. html中友情链接 版权信息,哪些情况是友情链接作弊?总结了11种方法!
  10. [Android 测试] 压力稳定性测试之: Monkey 详解分析脚本