时间间隔星期、月份、季度 查询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);
    }
}
相关文章
|
26天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
1月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
107 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
1月前
|
Java
Java 些许公共工具类
Java 些许公共工具类
15 1
|
1月前
|
缓存 Java 数据处理
java查询大量数据优化
通过结合的高性能云服务,如其提供的弹性计算资源与全球加速网络,可以进一步增强这些优化策略的效果,确保数据处理环节更加迅速、可靠。蓝易云不仅提供稳定的基础架构,还拥有强大的安全防护和灵活的服务选项,是优化大型数据处理项目不可或缺的合作伙伴。
27 0
|
2月前
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
34 1
|
3月前
|
缓存 前端开发 Java
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
【8月更文挑战第10天】java基础巩固,工具类的封装
27 1
【前端学java】java基础巩固复习巩固语法练习-工具类的封装(14)
|
3月前
|
Java
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
Java应用结构规范问题之在UnitConvertUtils工具类将千米转换为米的问题如何解决
|
3月前
|
存储 Java API
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
|
3月前
|
存储 设计模式 安全
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
Java GenericObjectPool 对象池化技术--SpringBoot sftp 连接池工具类
55 0
|
4月前
|
设计模式 存储 安全
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
62 1
下一篇
无影云桌面