package core.func;
import flex.messaging.util.UUIDUtils;
import groovy.swing.impl.Startable;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Set;
@SuppressWarnings("all")
public class DataCllectBiz {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = null;
private int weeks = 0;
/**
* 返回上月第一天
*/
public String getPrefistDay() {
lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
lastDate.add(Calendar.MONTH, -1);// 减一个月,变为上月的1号
// lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天
str = sdf.format(lastDate.getTime());
return str;
}
/**
* 返回前三个月第一天
*/
public String getTreefistDay() {
lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
lastDate.add(Calendar.MONTH, -3);// 减一个月,变为上月的1号
// lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天
str = sdf.format(lastDate.getTime());
return str;
}
/**
* 返回前六个月第一天
*/
public String getSixfistDay() {
lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
lastDate.add(Calendar.MONTH, -6);// 减一个月,变为上月的1号
// lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天
str = sdf.format(lastDate.getTime());
return str;
}
/**
*返回上月最后一天
*/
public String getPreLastDay() {
lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
// lastDate.add(Calendar.MONTH,-1);//减一个月,变为上月的1号
lastDate.add(Calendar.DATE, -1);// 减去一天,变为上月最后一天
str = sdf.format(lastDate.getTime());
return str;
}
DateFormat df = DateFormat.getDateInstance();
/**
* getTime(type,n) type 日期类型(week、month、quart、year) n
* week的第几天,month的第几周,quart和year的第几个月 当n为0时返回的是整个时间段
*/
public List<String> getTime(String type, int n) {
List<String> dateList = new ArrayList<String>();
if (n == 0) {
dateList.add(this.getTime(type, 1).get(0));
if ("week".equals(type)) {
dateList.add(this.getTime(type, 7).get(1));
} else if ("month".equals(type)) {
dateList.add(this.getTime(type, 4).get(1));
} else if ("quart".equals(type)) {
dateList.add(this.getTime(type, 3).get(1));
} else if ("year".equals(type)) {
dateList.add(this.getTime(type, 6).get(1));
}
} else {
if ("week".equals(type)) {
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + (8 - n)
* (-1));
Date day = currentDate.getTime();
String preday = df.format(day);
dateList.add(preday + " 0:00:00");
dateList.add(preday + " 23:59:59");
} else if ("month".equals(type)) {
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus
+ (29 - (n + 6 * (n - 1))) * (-1));
Date day = currentDate.getTime();
String preday = df.format(day);
dateList.add(preday + " 0:00:00");
currentDate.add(GregorianCalendar.DATE, 6);
day = currentDate.getTime();
preday = df.format(day);
dateList.add(preday + " 23:59:59");
} else if ("quart".equals(type)) {
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
lastDate.add(Calendar.MONTH, -1 * (4 - n));// 减一个月,变为上月的1号
String str = df.format(lastDate.getTime());
dateList.add(str + " 0:00:00");
lastDate.add(Calendar.MONTH, 1);// 加一个月,变为下月的1号
lastDate.add(Calendar.DATE, -1);// 减去一天,变为上月最后一天
String str2 = df.format(lastDate.getTime());
dateList.add(str2 + " 23:59:59");
} else if ("year".equals(type)) {
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
lastDate.add(Calendar.MONTH, -1 * (7 - n));// 减一个月,变为上月的1号
String str = df.format(lastDate.getTime());
dateList.add(str + " 0:00:00");
lastDate.add(Calendar.MONTH, 1);
lastDate.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
String str2 = df.format(lastDate.getTime());
dateList.add(str2 + " 23:59:59");
}
}
return dateList;
}
/**
* 获得当前日期与本周一相差的天数
*
*/
private int getMondayPlus() {
Calendar cd = Calendar.getInstance();
// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == 1) {
return -6;
} else {
return 2 - dayOfWeek;
}
}
/**
* 获得上周星期一的日期
* */
public String getPreviousMonday() {
weeks = -1;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preMonday;
}
/**
* 获得上周星期日的日期
* @return
* 返回上周日的日期,String类型
*/
public String getPreviousWeekSunday() {
weeks = -1;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preMonday;
}
/**
* 取得当前日期是第几周(在日程中的)
*
* @param date
* @return
*/
public int getWeekOfYearWithCPlan(String datestr) {
Date date;
try {
date = sdf.parse(datestr);
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(date);
System.out.println("第几周:" + calendar.get(Calendar.WEEK_OF_YEAR));
return calendar.get(Calendar.WEEK_OF_YEAR);
} catch (ParseException e) {
e.printStackTrace();
return -1;
}
}
/**
*获得本周星期一的日期
*/
public String getNowMonday() {
//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String nowMonday = df.format(monday);
return nowMonday;
}
/**
*获得四周前星期一的日期
*/
public String getfourMonday() {
weeks = -4;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preMonday;
}
/**
* 获得四周前星期天的日期
*
*/
public String getfourWeekSunday() {
weeks = -22;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preMonday;
}
}