各种日期处理
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.springframework.util.StringUtils;
public class DateUtils {
private static SimpleDateFormat detailDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static SimpleDateFormat dayDate = new SimpleDateFormat("yyyy-MM-dd");
private static final String DETAIL_DATE_START_PREFIX = " 00:00:00";
private static final String DETAIL_DATE_END_SUFFIX = " 23:59:59";
public static String getCurrentTime() {
Date now = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("MMddHHmmss");
return dateFormat.format(now);
}
public static String getYesterdayString() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
Date date = calendar.getTime();
calendar.setTime(date);
return dayDate.format(date);
}
public static Date getYesterdayDate(Date today) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(today);
calendar.add(Calendar.DATE, -1);
return calendar.getTime();
}
public static Date firstDayOfWeek(Date date) {
Calendar preDate = Calendar.getInstance();
preDate.setTime(date);
if (preDate.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
preDate.add(Calendar.DAY_OF_WEEK, -1);
}
preDate.set(Calendar.DAY_OF_WEEK, 2);
return preDate.getTime();
}
public static Date getPrevWeek(Date curDate) {
Calendar preDate = Calendar.getInstance();
preDate.setTime(curDate);
preDate.set(Calendar.DAY_OF_YEAR, preDate.get(Calendar.DAY_OF_YEAR) - 7);
return preDate.getTime();
}
public static Date getOldDate() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.add(Calendar.DATE, -(365 * 2));
return calendar.getTime();
}
public static int getMaxdayOfTime(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getActualMaximum(Calendar.DAY_OF_MONTH);
}
public static long getYesterdayStart() throws ParseException {
String yesterdayStartString = getYesterdayString() + DETAIL_DATE_START_PREFIX;
return detailDate.parse(yesterdayStartString).getTime();
}
public static long getYesterdayEnd() throws ParseException {
String yesterdayEndString = getYesterdayString() + DETAIL_DATE_END_SUFFIX;
return detailDate.parse(yesterdayEndString).getTime();
}
public static String getDateString() {
return detailDate.format(new Date());
}
public static String getSimpleDateString(Date date) {
return dayDate.format(date);
}
public static Date parseString2Date(String dateString) throws ParseException {
return dayDate.parse(dateString);
}
public static Date parseString2FullDate(String dateString) throws ParseException {
return detailDate.parse(dateString);
}
public static Date getDateByWeekOfYear(int year, int week) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.WEEK_OF_YEAR, week);
int day_of_week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
if (day_of_week == 0) {
day_of_week = 7;
}
calendar.add(Calendar.DATE, -day_of_week + 1);
return calendar.getTime();
}
public static Date getDateByWeekOfYearPro(int year, int week) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.WEEK_OF_YEAR, week);
int day_of_week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
if (day_of_week == 0) {
day_of_week = 7;
}
calendar.add(Calendar.DATE, -day_of_week + 1);
return calendar.getTime();
}
public static Date getDateByTaskId(String taskId, boolean lastWeek) throws ParseException {
if (!StringUtils.isEmpty(taskId)) {
String[] array = taskId.split("-");
int year = Integer.valueOf(array[array.length - 2]);
int week = lastWeek ? Integer.valueOf(array[array.length - 1]) - 1 : Integer.valueOf(array[array.length - 1]);
return DateUtils.getDateByWeekOfYear(year, week);
}
return null;
}
public static Date getFirstDayOfMonth(String date) throws NumberFormatException, ParseException {
if (!StringUtils.isEmpty(date)) {
String[] array = date.split("-");
int year = Integer.valueOf(array[array.length - 2]);
String month = array[array.length - 1].length() == 1 ? ("0" + array[array.length - 1]) : array[array.length - 1];
return DateUtils.parseString2Date(year + "-" + month + "-" + "01");
}
return null;
}
public static Date firstDayOfMonth(Date date) {
Calendar preDate = Calendar.getInstance();
preDate.setTime(date);
preDate.set(Calendar.DAY_OF_MONTH, 1);
return preDate.getTime();
}
public static Date firstDayOfQuarter(Date date) {
Calendar preDate = Calendar.getInstance();
preDate.setTime(date);
preDate.set(Calendar.MONTH, preDate.get(Calendar.MONTH) / 3 * 3);
preDate.set(Calendar.DAY_OF_MONTH, 1);
return preDate.getTime();
}
public static Date previousMonth(Date curDate) {
Calendar preDate = Calendar.getInstance();
preDate.setTime(curDate);
preDate.set(Calendar.DAY_OF_MONTH, 0);
preDate.setTime(preDate.getTime());
preDate.set(Calendar.DAY_OF_MONTH, 1);
return preDate.getTime();
}
public static Date previousQuarter(Date curDate) {
Calendar preDate = Calendar.getInstance();
preDate.setTime(curDate);
preDate.set(Calendar.MONTH, preDate.get(Calendar.MONTH) - 3);
return preDate.getTime();
}
private static List<String> getAllDay(Date month, boolean lengthFlag) {
List<String> list = new ArrayList<String>();
Calendar cal = Calendar.getInstance();
cal.setTime(month);
int maxDate = cal.getActualMaximum(Calendar.DATE);
if (!lengthFlag) {
maxDate = cal.get(Calendar.DAY_OF_MONTH);
}
cal.set(Calendar.DAY_OF_MONTH, 1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 0; i < maxDate; i++, cal.add(Calendar.DATE, 1)) {
Date d = cal.getTime();
String date = sdf.format(d);
list.add(date);
}
return list;
}
public static boolean isLegalDateString(String date, String dateFormat) {
if (date != null) {
SimpleDateFormat format = new SimpleDateFormat(
dateFormat);
format.setLenient(false);
try {
format.format(format.parse(date));
} catch (ParseException e) {
return false;
}
return true;
}
return false;
}
public static void main(String[] args) {
List<String> list = getAllDay(new Date(), true);
list.forEach((v) -> {
System.out.println(v);
});
System.out.println(isLegalDateString("2018-08-08 08:08", "yyyy-MM-dd HH:mm:ss"));
}
}