sadjv3_java/src/main/java/com/sqx/modules/utils/PeriodUtil.java

128 lines
6.6 KiB
Java
Raw Normal View History

2024-06-05 19:12:15 +08:00
package com.sqx.modules.utils;
import cn.hutool.core.date.DateUtil;
import com.sqx.modules.artificer.entity.Period;
import java.util.Calendar;
import java.util.Date;
public class PeriodUtil {
//获取传入日期的周期的开始时间以及结束时间
public static Period obtainCycle(Date date) {
Period period = new Period();
final Calendar c = Calendar.getInstance();
c.setTime(date);
//如果日期为1号到10号 返回当月1日与10日
2024-07-16 11:25:39 +08:00
if(c.get(Calendar.DAY_OF_MONTH) >=1 && c.get(Calendar.DAY_OF_MONTH)<=15){
2024-06-05 19:12:15 +08:00
c.set(Calendar.DATE,1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
period.setStartFundData(DateUtil.parse(DateUtil.format(c.getTime(),"yyyy-MM-dd HH:mm:ss")));
2024-07-16 11:25:39 +08:00
c.set(Calendar.DATE,15);
2024-06-05 19:12:15 +08:00
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
c.set(Calendar.MILLISECOND, 999);
period.setEndFundData(DateUtil.parse(DateUtil.format(c.getTime(),"yyyy-MM-dd HH:mm:ss")));
2024-07-16 11:25:39 +08:00
} else if (c.get(Calendar.DAY_OF_MONTH)>=16 && c.get(Calendar.DAY_OF_MONTH)<=31) {
2024-06-05 19:12:15 +08:00
//如果日期为11号到20号 返回当月11日与20日
2024-07-16 11:25:39 +08:00
c.set(Calendar.DATE,16);
2024-06-05 19:12:15 +08:00
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
period.setStartFundData(DateUtil.parse(DateUtil.format(c.getTime(),"yyyy-MM-dd HH:mm:ss")));
2024-07-16 11:25:39 +08:00
// c.set(Calendar.DATE,20);
// c.set(Calendar.HOUR_OF_DAY, 23);
// c.set(Calendar.MINUTE, 59);
// c.set(Calendar.SECOND, 59);
// c.set(Calendar.MILLISECOND, 999);
// period.setEndFundData(DateUtil.parse(DateUtil.format(c.getTime(),"yyyy-MM-dd HH:mm:ss")));
// }else if (c.get(Calendar.DAY_OF_MONTH)>=21 && c.get(Calendar.DAY_OF_MONTH)<=31) {
// //如果日期为21号到31号 返回当月21日与当月最后一天
// c.set(Calendar.DATE,21);
// c.set(Calendar.HOUR_OF_DAY, 0);
// c.set(Calendar.MINUTE, 0);
// c.set(Calendar.SECOND, 0);
// c.set(Calendar.MILLISECOND, 0);
// period.setStartFundData(DateUtil.parse(DateUtil.format(c.getTime(),"yyyy-MM-dd HH:mm:ss")));
2024-06-05 19:12:15 +08:00
//获取月底的最后一天
c.set(Calendar.DATE,DateUtil.endOfMonth(c).get(Calendar.DATE));
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
c.set(Calendar.MILLISECOND, 999);
period.setEndFundData(DateUtil.parse(DateUtil.format(c.getTime(),"yyyy-MM-dd HH:mm:ss")));
}
return period;
}
//传入时间计算上一期时间
public static Period previousIssue(Date date) {
//取当前时间的上一个周期
Date previousDate = DateUtil.offsetDay(date,-10);
//获取上一个周期的开始以及结束时间
Period period = obtainCycle(previousDate);
return period;
}
//传入时间计算周期
public static Period calculationPeriod(Period period) {
Period selectPeriod;
switch (period.getFundType()){
case 1:
//本期 根据传入的时间获取周期开始时间以及结束时间
selectPeriod = obtainCycle(period.getFundData());
period.setStartFundData(selectPeriod.getStartFundData());
period.setEndFundData(selectPeriod.getEndFundData());
break;
case 2:
//上期
selectPeriod = obtainCycle(period.getFundData());
selectPeriod = previousIssue(selectPeriod.getStartFundData());
period.setStartFundData(selectPeriod.getStartFundData());
period.setEndFundData(selectPeriod.getEndFundData());
break;
case 3:
//本月
Date beginOfMonth = DateUtil.parse(DateUtil.format(DateUtil.beginOfMonth(period.getFundData()), "yyyy/MM/dd"));
Date endOfMonth = DateUtil.parse(DateUtil.format(DateUtil.endOfMonth(period.getFundData()), "yyyy/MM/dd"));
final Calendar beginOfMonthc = Calendar.getInstance();
beginOfMonthc.setTime(beginOfMonth);
beginOfMonthc.set(Calendar.HOUR_OF_DAY, 0);
beginOfMonthc.set(Calendar.MINUTE, 0);
beginOfMonthc.set(Calendar.SECOND, 0);
beginOfMonthc.set(Calendar.MILLISECOND, 0);
final Calendar endOfMonthc = Calendar.getInstance();
endOfMonthc.setTime(endOfMonth);
endOfMonthc.set(Calendar.HOUR_OF_DAY, 23);
endOfMonthc.set(Calendar.MINUTE, 59);
endOfMonthc.set(Calendar.SECOND, 59);
endOfMonthc.set(Calendar.MILLISECOND, 999);
period.setStartFundData(DateUtil.parse(DateUtil.format(beginOfMonthc.getTime(),"yyyy-MM-dd HH:mm:ss")));
period.setEndFundData(DateUtil.parse(DateUtil.format(endOfMonthc.getTime(),"yyyy-MM-dd HH:mm:ss")));
break;
case 4:
//上月
Date beginOfMonth2 = DateUtil.parse(DateUtil.format(DateUtil.beginOfMonth(DateUtil.offsetMonth(period.getFundData(),-1)), "yyyy/MM/dd"));
Date endOfMonth2 = DateUtil.parse(DateUtil.format(DateUtil.endOfMonth(DateUtil.offsetMonth(period.getFundData(),-1)), "yyyy/MM/dd"));
final Calendar beginOfMonthc2 = Calendar.getInstance();
beginOfMonthc2.setTime(beginOfMonth2);
beginOfMonthc2.set(Calendar.HOUR_OF_DAY, 0);
beginOfMonthc2.set(Calendar.MINUTE, 0);
beginOfMonthc2.set(Calendar.SECOND, 0);
beginOfMonthc2.set(Calendar.MILLISECOND, 0);
final Calendar endOfMonthc2 = Calendar.getInstance();
endOfMonthc2.setTime(endOfMonth2);
endOfMonthc2.set(Calendar.HOUR_OF_DAY, 23);
endOfMonthc2.set(Calendar.MINUTE, 59);
endOfMonthc2.set(Calendar.SECOND, 59);
endOfMonthc2.set(Calendar.MILLISECOND, 999);
period.setStartFundData(DateUtil.parse(DateUtil.format(beginOfMonthc2.getTime(),"yyyy-MM-dd HH:mm:ss")));
period.setEndFundData(DateUtil.parse(DateUtil.format(endOfMonthc2.getTime(),"yyyy-MM-dd HH:mm:ss")));
break;
}
return period;
}
}