private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public static String getPastDate(int past) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - past);
Date today = calendar.getTime();
String result = sdf.format(today);
return result;
}
public static String getLastMonthMinDay() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
Date date = calendar.getTime();
return sdf.format(date);
}
public static String getLastMonthMaxDay() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date date = calendar.getTime();
return sdf.format(date);
}
public static String getLastQuaterMinDay() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, ((int) calendar.get(Calendar.MONTH) / 3 - 1) * 3);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return sdf.format(calendar.getTime());
}
public static String getLastQuaterMaxDay() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, ((int) calendar.get(Calendar.MONTH) / 3 - 1) * 3 + 2);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
return sdf.format(calendar.getTime());
}
public static List<String> getDayListOfMonth() {
List<String> list = new ArrayList<String>();
Calendar aCalendar = Calendar.getInstance(Locale.CHINA);
aCalendar.add(Calendar.MONTH, -1);
int year = aCalendar.get(Calendar.YEAR);
int month = aCalendar.get(Calendar.MONTH) + 1;
int day = aCalendar.getActualMaximum(Calendar.DATE);
for (int i = 1; i <= day; i++) {
String aDate = String.valueOf(year) + "-" + month + "-" + i;
list.add(aDate);
}
return list;
}
public static List<String> getRangeDate(String beginDate, String endDate) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dBegin = new Date();
Date dEnd = new Date();
try {
dBegin = sdf.parse(beginDate);
dEnd = sdf.parse(endDate);
} catch (Exception e) {
e.printStackTrace();
}
List<String> lDate = new ArrayList<String>();
lDate.add(beginDate);
Calendar calBegin = Calendar.getInstance();
calBegin.setTime(dBegin);
Calendar calEnd = Calendar.getInstance();
calEnd.setTime(dEnd);
while (dEnd.after(calBegin.getTime())) {
calBegin.add(Calendar.DAY_OF_MONTH, 1);
lDate.add(sdf.format(calBegin.getTime()));
}
return lDate;
}
public static List<String> getLastYear(String year) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
Date date = new Date();
List<String> list = new ArrayList<String>();
try {
date = format.parse(year + "-1");
} catch (Exception e) {
e.printStackTrace();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
for (int i = 12; i > 0; i--) {
c.add(Calendar.MONTH, -1);
list.add(format.format(c.getTime()));
}
Collections.reverse(list);
return list;
}
public static String getLastYearToday() {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.YEAR, -1);
return sdf.format(c.getTime());
}
public static List<String> getThisWeekDateLine() {
LocalDate today = LocalDate.now();
LocalDate monday = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
LocalDate sunday = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
return getRangeDate(monday.toString(), sunday.toString());
}
public static String getStartOrEndDayOfWeek(LocalDate today, Boolean isFirst) {
LocalDate resDate = LocalDate.now();
if (today == null) {
today = resDate;
}
DayOfWeek week = today.getDayOfWeek();
int value = week.getValue();
if (isFirst) {
resDate = today.minusDays(value - 1);
} else {
resDate = today.plusDays(7 - value);
}
return resDate.toString();
}
public static String getStartOrEndDayOfMonth(LocalDate today, Boolean isFirst) {
LocalDate resDate = LocalDate.now();
if (today == null) {
today = resDate;
}
Month month = today.getMonth();
int length = month.length(today.isLeapYear());
if (isFirst) {
resDate = LocalDate.of(today.getYear(), month, 1);
} else {
resDate = LocalDate.of(today.getYear(), month, length);
}
return resDate.toString();
}
public static String getStartOrEndDayOfQuarter(LocalDate today, Boolean isFirst) {
LocalDate resDate = LocalDate.now();
if (today == null) {
today = resDate;
}
Month month = today.getMonth();
Month firstMonthOfQuarter = month.firstMonthOfQuarter();
Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
if (isFirst) {
resDate = LocalDate.of(today.getYear(), firstMonthOfQuarter, 1);
} else {
resDate = LocalDate.of(today.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(today.isLeapYear()));
}
return resDate.toString();
}
public static String getStartOrEndDayOfYear(LocalDate today, Boolean isFirst) {
LocalDate resDate = LocalDate.now();
if (today == null) {
today = resDate;
}
if (isFirst) {
resDate = LocalDate.of(today.getYear(), Month.JANUARY, 1);
} else {
resDate = LocalDate.of(today.getYear(), Month.DECEMBER, Month.DECEMBER.length(today.isLeapYear()));
}
return resDate.toString();
}
}