项目中有个需求,要求做一个定时任务,每个工作日的指定时间做一些操作进行积分的增加,增加之前需要查询前一天的积分,然后根据这个需求自己写了一个工具类,不知道有没有其他更简单的办法,现在跟大家分享下:
public static String getPreDay(){
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00"));
String year = c.get(Calendar.YEAR) + "";
String month = (c.get(Calendar.MONTH) + 1)+"";
String day = c.get(Calendar.DAY_OF_MONTH) + "";
if(month.length() == 1){
month = "0"+month;
}
if(day.length()==1){
day = "0"+day;
}
//获取上个月的最大天数
c.add(Calendar.MONTH, 1);
c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
c.add(Calendar.DATE, -1);//设置上个月的最后一天
c.set(Calendar.DAY_OF_MONTH, 0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String last = Integer.valueOf(sdf.format(c.getTime()).split("-")[2])+"";
String weekOfDate = getWeekOfDate(new Date());
String preToday = "";
if("星期一".equals(weekOfDate)){
if("01".equals(month)){
//如果是1月
int preMonth = 12;
if("03".equals(day)){
preToday = year+ (preMonth+"") + last;
}else if("02".equals(day)){
preToday = year + (preMonth+"") + ((Integer.valueOf(last)-1)+"");
}else if("01".equals(day)){
preToday = (((Integer.valueOf(year)-1) +"") + (preMonth+"") + ((Integer.valueOf(last)-2))+"");
}else{
preToday = ((Integer.valueOf(year)-1) +"") + month + isDayLength((Integer.valueOf(day)-3)+"");
}
}else{
//其他月
if("03".equals(day)){
preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((last)+"");
}else if("02".equals(day)){
preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((Integer.valueOf(last)-1)+"");
}else if("01".equals(day)){
preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((Integer.valueOf(last)-2)+"");
}else {
//其他天
preToday = year + month + isDayLength((Integer.valueOf(day)-3)+"");
}
}
}else if("星期六".equals(weekOfDate) ||"星期日".equals(weekOfDate) ){
//如果是1月
if("01".equals(month)){
int preMonth = 12;
if("02".equals(day)){
if("星期六".equals(weekOfDate)){
preToday = (((Integer.valueOf(year)-1)) +"") + month + isDayLength((Integer.valueOf(day)-1)+"");
}else{
preToday = (((Integer.valueOf(year)-1)) +"") + (preMonth+"") + ((last)+"");
}
}else if("01".equals(day)){
if("星期六".equals(weekOfDate)){
preToday = (((Integer.valueOf(year)-1)) +"") + (preMonth+"") + ((last)+"");
}else{
preToday = (((Integer.valueOf(year)-1) +"") + (preMonth+"") + ((Integer.valueOf(last)-1))+"");
}
}else{
if("星期六".equals(weekOfDate)){
preToday = year + month + isDayLength((Integer.valueOf(day)-1)+"");
}else{
preToday = year + month + isDayLength((Integer.valueOf(day)-2)+"");
}
}
}else {
//不是1月份
if("01".equals(day)){
if("星期六".equals(weekOfDate)){
preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((last)+"");
}else if("星期日".equals(weekOfDate)){
preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((Integer.valueOf(last)-1)+"");
}
}else if("02".equals(day)){
if("星期六".equals(weekOfDate)){
preToday = year + month + isDayLength((Integer.valueOf(day)-1)+"");
}else if("星期日".equals(weekOfDate)){
preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((last)+"");
}
}else{
if("星期六".equals(weekOfDate)){
preToday = year + month + isDayLength((Integer.valueOf(day)-1)+"");
}else if("星期日".equals(weekOfDate)){
preToday = year + month + isDayLength((Integer.valueOf(day)-2)+"");
}
}
}
}else{
//不是周六日和周一
//如果是1月
if("01".equals(month)){
int preMonth = 12;
if("01".equals(day)){
preToday = (((Integer.valueOf(year)-1)) +"") + (preMonth+"") + ((last)+"");
}else{
preToday = year + month + isDayLength((Integer.valueOf(day)-1)+"");
}
}else {
//不是1月
if("01".equals(day)){
preToday = year + (isMonthLength(Integer.valueOf(month)-1+"")) + ((last)+"");
}else{
preToday = year + month + isDayLength((Integer.valueOf(day)-1)+"");
}
}
}
return preToday;
}
private static String isDayLength(String day){
if(day.length() == 1){
day = "0"+ day;
}
return day;
}
不喜勿喷,欢迎各位大佬提建议帮我改进 (* ̄︶ ̄)