时间间隔星期、月份、季度 查询java工具类

简介: java工具类
packagecom.ecenter.nyxmsb.modular.money.utils;
importcn.hutool.core.date.DateTime;
importcn.hutool.core.date.DateUtil;
importcom.ecenter.nyxmsb.core.util.ShiroUtils;
importcom.ecenter.nyxmsb.modular.system.entity.SysUser;
importorg.apache.shiro.SecurityUtils;
importorg.springframework.util.StringUtils;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.*;
/*** @ClassName Utils* @Author Lin* @Date 2020/11/11 18:24* @Version V1.0* @Description**/publicclassUtilsLin {
publicstaticfinalStringFORMAT_YYYY_MM_DD="yyyy-MM-dd";
/*** @Author Lin* @Description  数据库字段增加不为空判断* @Date 2020/11/11 18:34* @Param [sql]* @return java.lang.String**///今天publicStringtoday=DateUtil.today();
publicDateTimedate=DateUtil.date();
//本月publicStringmonth=DateUtil.format(date, "M") ;
//本周的第一天publicStringweekFirst=UtilsLin.getThisWeekOfFirstDate();
//本周的最后一天publicStringweekEnd=DateUtil.format(DateUtil.offsetDay(date, 4), "yyyy-MM-dd") ;
//本月的第一天publicStringMonthFirst=UtilsLin.getThisMonthOfFirstDate(0);
//本月的最后一天publicStringMonthEnd=UtilsLin.getThisMouthLastDay();
//本季度的第一天publicStringlastdateTimSeason=UtilsLin.getCurrQuarter(Integer.valueOf(UtilsLin.getQuarter()))[1];
//本季度的第一天publicStringfirstdateTimSeason=UtilsLin.getCurrQuarter(Integer.valueOf(UtilsLin.getQuarter()))[0];
//本月天数publicintdaysInMonth=UtilsLin.getDaysOfMonth();
publicstaticStringchangeSqlNotNull(Stringsql){
String[] strings=sql.split(",");
StringreturnSql="";
for (Stringstr: strings ) {
if (str.contains("''")){
returnSql=returnSql+str+",";
            }else {
returnSql=returnSql+"ifnull("+str+",'') "+str+",";
            }
        }
returnreturnSql.substring(0,returnSql.length()-1);
    }
/*** 获取用户部门信息* @return*/publicstaticStringgetDept(){
SysUserprincipal= (SysUser) SecurityUtils.getSubject().getPrincipal();
returnprincipal.getDeptId().toString();
    }
publicstaticSysUsergetUserEntity() {
//        Object principal = SecurityUtils.getSubject().getPrincipal();//        SysUser sysUser = new SysUser();//        BeanUtils.copyProperties(principal, sysUser);//        return sysUser;Objectprincipal=SecurityUtils.getSubject().getPrincipal();
return (SysUser) SecurityUtils.getSubject().getPrincipal();
    }
/*** 获取两个日期之间的所有日期(字符串格式, 按天计算)** @param startTime String 开始时间 yyyy-MM-dd* @param endTime  String 结束时间 yyyy-MM-dd* @return*/publicstaticList<String>getBetweenDays(StringstartTime, StringendTime) throwsParseException {
if(StringUtils.isEmpty(startTime) ||StringUtils.isEmpty(endTime)){
returnnull;
        }
//1、定义转换格式SimpleDateFormatdf=newSimpleDateFormat("yyyy-MM-dd");
Datestart=df.parse(startTime);
Dateend=df.parse(endTime);
if(StringUtils.isEmpty(start) ||StringUtils.isEmpty(end)){
returnnull;
        }
List<String>result=newArrayList<String>();
CalendartempStart=Calendar.getInstance();
tempStart.setTime(start);
tempStart.add(Calendar.DAY_OF_YEAR, 1);
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
CalendartempEnd=Calendar.getInstance();
tempEnd.setTime(end);
result.add(sdf.format(start));
while (tempStart.before(tempEnd) ||tempStart.equals(tempEnd)) {
result.add(sdf.format(tempStart.getTime()));
tempStart.add(Calendar.DAY_OF_YEAR, 1);
        }
returnresult;
    }
/*** 本周的第一天* @return*/publicstaticStringgetThisWeekOfFirstDate() {
SimpleDateFormatformat=newSimpleDateFormat(FORMAT_YYYY_MM_DD);
Calendarcalendar=Calendar.getInstance();
calendar.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
returnformat.format(calendar.getTime());
    }
/*** @Title: DateUtil* @Description: 获取本月当前时间(或者上月下月)* @author lin* @since 2019年12月5日下午4:02:44* @param i 为0表示本月,为1表示下月,为-1表示上月* @return* @throws*/publicstaticStringgetTime1(Integeri){
Calendarcalendar=Calendar.getInstance();
if (i!=null) {
calendar.add(Calendar.MONTH, i);
        }
intyear=calendar.get(Calendar.YEAR);
intmonth=calendar.get(Calendar.MONTH);
intday=calendar.get(Calendar.DATE);
returnyear+"-"+ (month+1) +"-"+day;
    }
/*** @Title: DateUtil* @Description: 获取本月第一天(获取本月的第一天)* @author lin* @since 2019年12月5日下午3:59:55* @param //i为0表示本月为1表示下月* @return* @throws*/publicstaticStringgetThisMonthOfFirstDate(Integeri) {
SimpleDateFormatformat=newSimpleDateFormat("YYYY-MM-dd");
Calendarcalendar=Calendar.getInstance();
if (i!=null) {
calendar.add(Calendar.MONTH, i);
        }
calendar.set(Calendar.DAY_OF_MONTH, Calendar.SUNDAY);
returnformat.format(calendar.getTime());
    }
/*** 获取本月最后一天* @return*/publicstaticStringgetThisMouthLastDay(){
//设置时间格式SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-dd");
//获得实体类Calendarca=Calendar.getInstance();
//设置最后一天ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
//最后一天格式化StringlastDay=format.format(ca.getTime());
returnlastDay;
    }
/*** 某一个月第一天和最后一天** @param date 指定日期* @param pattern 日期格式* @param //isNeedHms是否需要时分秒* @return*/publicstaticMap<String, Object>getFirstLastDayByMonth(Datedate,
Stringpattern, booleanisNeedHms) {
SimpleDateFormatdf=newSimpleDateFormat(pattern);
Calendarcalendar=Calendar.getInstance();
calendar.setTime(date);
DatetheDate=calendar.getTime();
// 第一天GregorianCalendargcLast= (GregorianCalendar) Calendar.getInstance();
gcLast.setTime(theDate);
gcLast.set(Calendar.DAY_OF_MONTH, 1);
Stringday_first=df.format(gcLast.getTime());
StringBufferstr=newStringBuffer().append(day_first);
if (isNeedHms) {
str.append(" 00:00:00");
        }
day_first=str.toString();
// 最后一天calendar.add(Calendar.MONTH, 1); // 加一个月calendar.set(Calendar.DATE, 1); // 设置为该月第一天calendar.add(Calendar.DATE, -1); // 再减一天即为上个月最后一天Stringday_last=df.format(calendar.getTime());
StringBufferendStr=newStringBuffer().append(day_last);
if (isNeedHms) {
endStr.append(" 23:59:59");
        }
day_last=endStr.toString();
Map<String, Object>map=newHashMap<String, Object>();
map.put("first", day_first);
map.put("last", day_last);
returnmap;
    }
/*** 获取当前季度**/publicstaticStringgetQuarter() {
Calendarc=Calendar.getInstance();
intmonth=c.get(Calendar.MONTH) +1;
intquarter=0;
if (month>=1&&month<=3) {
quarter=1;
        } elseif (month>=4&&month<=6) {
quarter=2;
        } elseif (month>=7&&month<=9) {
quarter=3;
        } else {
quarter=4;
        }
returnquarter+"";
    }
/*** 获取某季度的第一天和最后一天*  @param //num第几季度*/publicstaticString[] getCurrQuarter(intnum) {
String[] s=newString[2];
Stringstr="";
// 设置本年的季CalendarquarterCalendar=null;
switch (num) {
case1: // 本年到现在经过了一个季度,在加上前4个季度quarterCalendar=Calendar.getInstance();
quarterCalendar.set(Calendar.MONTH, 3);
quarterCalendar.set(Calendar.DATE, 1);
quarterCalendar.add(Calendar.DATE, -1);
str=UtilsLin.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd");
s[0] =str.substring(0, str.length() -5) +"01-01";
s[1] =str;
break;
case2: // 本年到现在经过了二个季度,在加上前三个季度quarterCalendar=Calendar.getInstance();
quarterCalendar.set(Calendar.MONTH, 6);
quarterCalendar.set(Calendar.DATE, 1);
quarterCalendar.add(Calendar.DATE, -1);
str=UtilsLin.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd");
s[0] =str.substring(0, str.length() -5) +"04-01";
s[1] =str;
break;
case3:// 本年到现在经过了三个季度,在加上前二个季度quarterCalendar=Calendar.getInstance();
quarterCalendar.set(Calendar.MONTH, 9);
quarterCalendar.set(Calendar.DATE, 1);
quarterCalendar.add(Calendar.DATE, -1);
str=UtilsLin.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd");
s[0] =str.substring(0, str.length() -5) +"07-01";
s[1] =str;
break;
case4:// 本年到现在经过了四个季度,在加上前一个季度quarterCalendar=Calendar.getInstance();
str=UtilsLin.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd");
s[0] =str.substring(0, str.length() -5) +"10-01";
s[1] =str.substring(0, str.length() -5) +"12-31";
break;
        }
returns;
    }
/*** 用途:以指定的格式格式化日期字符串* @param pattern 字符串的格式* @param currentDate 被格式化日期* @return String 已格式化的日期字符串* @throws NullPointerException 如果参数为空*/publicstaticStringformatDate(DatecurrentDate, Stringpattern){
if(currentDate==null||"".equals(pattern) ||pattern==null){
returnnull;
        }
SimpleDateFormatsdf=newSimpleDateFormat(pattern);
returnsdf.format(currentDate);
    }
/*** @Author Lin* @Description* @Date 2021/3/10 14:17* @Param []* @return java.util.List<java.lang.String>**/publicstaticList<String>getStartDateToEndDate(StringstartDate,StringendDate) {
List<String>betweenDays=null;
try {
betweenDays=UtilsLin.getBetweenDays(startDate, endDate);
System.out.println(betweenDays);
        } catch (ParseExceptione) {
e.printStackTrace();
        }
returnbetweenDays;
    }
/*** @Author Lin* @Description 本月天数* @Date 2021/3/10 14:48* @Param [date]* @return int**/publicstaticintgetDaysOfMonth() {
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
Calendarcalendar=Calendar.getInstance();
calendar.setTime(newDate());
returncalendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    }
}
相关文章
|
3月前
|
Java Apache 开发者
解决java.lang.IllegalArgumentException: Invalid uri由无效查询引起的问题
最后,当你修改代码以避免这个异常时,保持代码的整洁和可读性同样重要。注释你的代码,用意图清晰的方法名,并确保逻辑简单明了,这样在未来你或其他开发者需要时可以轻松地维护它。
434 20
|
4月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
189 1
|
7月前
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
233 0
|
9月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过MongoDB Atlas Data Lake或Apache Drill,可以在Java中使用SQL语法查询MongoDB数据。这两种方法都需要适当的配置和依赖库的支持。希望本文提供的示例和说明能够帮助开发者实现这一目标。
348 17
|
9月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
933 6
|
10月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
393 9
|
11月前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
133 8
|
12月前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
739 6
|
缓存 Java 数据处理
java查询大量数据优化
通过结合的高性能云服务,如其提供的弹性计算资源与全球加速网络,可以进一步增强这些优化策略的效果,确保数据处理环节更加迅速、可靠。蓝易云不仅提供稳定的基础架构,还拥有强大的安全防护和灵活的服务选项,是优化大型数据处理项目不可或缺的合作伙伴。
281 0
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
738 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题