时间间隔星期、月份、季度 查询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);
    }
}
相关文章
|
1月前
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
24 1
|
1月前
|
Java 数据库连接
Hibernate中使用Criteria查询及注解——(Dept.java)
Hibernate中使用Criteria查询及注解——(Dept.java)
15 1
|
1月前
|
NoSQL Java 数据库连接
使用Java实现从数据库查出数据存入Redis,并在查询时先查Redis,如果Redis中没有数据再从数据库中读取
使用Java实现从数据库查出数据存入Redis,并在查询时先查Redis,如果Redis中没有数据再从数据库中读取
365 1
|
1月前
|
算法 Java
Java使用Cipher.getInstance(“AES/ECB/PKCS5Padding“);加解密算法工具类实现
Java使用Cipher.getInstance(“AES/ECB/PKCS5Padding“);加解密算法工具类实现
33 0
|
1月前
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
16 1
|
6天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
|
11天前
|
安全 Java
深入理解 Java 多线程和并发工具类
【4月更文挑战第19天】本文探讨了Java多线程和并发工具类在实现高性能应用程序中的关键作用。通过继承`Thread`或实现`Runnable`创建线程,利用`Executors`管理线程池,以及使用`Semaphore`、`CountDownLatch`和`CyclicBarrier`进行线程同步。保证线程安全、实现线程协作和性能调优(如设置线程池大小、避免不必要同步)是重要环节。理解并恰当运用这些工具能提升程序效率和可靠性。
|
1月前
|
JSON Java 网络安全
Java使用hutool工具类发送网络请求
Java使用hutool工具类发送网络请求
43 0
|
1月前
|
Java 数据库连接
Hibernate中使用Criteria查询及注解——(DeptTest.java)
Hibernate中使用Criteria查询及注解——(DeptTest.java)
8 1
|
1月前
|
Java 数据库连接
Hibernate中使用Criteria查询及注解——(Emp.java)
Hibernate中使用Criteria查询及注解——(Emp.java)
9 0