public class DateConvertUtils {
private static final String datePattern = "yyyy-MM-dd";
private static final String yearMonthPattern = "yyyy-MM";
private static final String dateTimePattern = "yyyy-MM-dd HH:mm:ss";
private static final String monthDayPattern = "MM月dd日";
public static String date2Str(Date date) {
return new SimpleDateFormat(datePattern).format(date);
}
public static String date2DateTimeStr(Date date) {
if (ObjectUtils.isEmpty(date)) {
return "";
}
return new SimpleDateFormat(dateTimePattern).format(date);
}
/**
* 日期字符串转换为 X月-X日 格式
*
* @param dateStr 【yyyy-MM-dd】
* @return
*/
public static String dateStr2MonthDayStr(String dateStr) {
Date date = str2Date(dateStr);
if (ObjectUtils.isEmpty(date)) {
return "";
}
return new SimpleDateFormat(monthDayPattern).format(date);
}
public static String date2MonthDayStr(Date date) {
if (ObjectUtils.isEmpty(date)) {
return "";
}
return new SimpleDateFormat(monthDayPattern).format(date);
}
public static Date str2Date(String dateStr) {
try {
return new SimpleDateFormat(datePattern).parse(dateStr);
} catch (ParseException e) {
return new Date();
}
}
public static Date str2DateTime(String dateStr) {
try {
return new SimpleDateFormat(dateTimePattern).parse(dateStr);
} catch (ParseException e) {
return new Date();
}
}
public static String localDate2Str(LocalDate localDate) {
return localDate.toString();
}
public static String yearMonthStrFormatter(String dateStr) {
return new SimpleDateFormat(yearMonthPattern).format(str2Date(dateStr));
}
public static String yearMonthStrToday() {
return new SimpleDateFormat(yearMonthPattern).format(today());
}
public static String date2YearMonthStr(Date date) {
return new SimpleDateFormat(yearMonthPattern).format(date);
}
public static String yearMonthStrLastMonth() {
LocalDate localDate = LocalDate.now().minusMonths(1);
ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
Date date = Date.from(zonedDateTime.toInstant());
return new SimpleDateFormat(yearMonthPattern).format(date);
}
public static String getLast3MonthYearMonthStr() {
LocalDate date = LocalDate.now();
date = date.minusMonths(3);
return yearMonthStrFormatter(localDate2Str(date));
}
public static String getLast3MonthDateStrStart() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -3);
cal.set(Calendar.DAY_OF_MONTH, 1);
Date time = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time);
}
public static String getLast3MonthDateStrEnd() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -3);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
Date time = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time);
}
public static Date today() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(datePattern);
try {
return sdf.parse(sdf.format(date));
} catch (ParseException e) {
return date;
}
}
public static String localDateTime2Str(LocalDateTime localDateTime) {
DateTimeFormatter df = DateTimeFormatter.ofPattern(dateTimePattern);
return df.format(localDateTime);
}
public static String localDateTime2DateStr(LocalDateTime localDateTime) {
DateTimeFormatter df = DateTimeFormatter.ofPattern(datePattern);
return df.format(localDateTime);
}
public static String getWeekStart() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.WEEK_OF_MONTH, 0);
cal.set(Calendar.DAY_OF_WEEK, 2);
Date time = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time);
}
public static String getWeekEnd() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_WEEK, cal.getActualMaximum(Calendar.DAY_OF_WEEK));
cal.add(Calendar.DAY_OF_WEEK, 1);
Date time = cal.getTime();
time = DateUtils.addDays(time, 1);
return new SimpleDateFormat("yyyy-MM-dd").format(time);
}
public static String getMonthStart() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 1);
Date time = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time);
}
public static String getMonthEnd() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
Date time = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time);
}
public static String getLastMonthStart() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH, 1);
Date time = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time);
}
public static String getLastMonthEnd() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
Date time = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time);
}
public static YearMonth str2YearMonth(String str) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse(str, fmt);
return YearMonth.of(localDate.getYear(), localDate.getMonthValue());
}
public static YearMonth getYearMonth(String searchDate) {
YearMonth yearMonth = YearMonth.now();
if (searchDate.equals("DAY") || searchDate.equals("TODAY")) {
yearMonth = YearMonth.now();
} else if (searchDate.equals("MONTH")) {
yearMonth = YearMonth.now();
} else if (searchDate.equals("LAST_MONTH")) {
yearMonth = YearMonth.now().plusMonths(-1);
}
return yearMonth;
}
public static String getDateStrBySearchDate(String searchDate) {
String billMonth = "";
if (searchDate.equals("DAY") || searchDate.equals("TODAY")) {
billMonth = DateConvertUtils.date2Str(new Date());
} else if (searchDate.equals("MONTH")) {
billMonth = DateConvertUtils.yearMonthStrToday();
} else if (searchDate.equals("LAST_MONTH")) {
billMonth = DateConvertUtils.yearMonthStrLastMonth();
}
return billMonth;
}
public static List<YearMonth> getWeekYearMonths() {
List<YearMonth> yearMonths = new ArrayList<>();
YearMonth startMonth = DateConvertUtils.str2YearMonth(DateConvertUtils.getWeekStart());
YearMonth endMonth = DateConvertUtils.str2YearMonth(DateConvertUtils.getWeekEnd());
if (startMonth.format(DateTimeFormatter.ofPattern("yyyy-MM")).equals(endMonth.format(DateTimeFormatter.ofPattern("yyyy-MM")))) {
yearMonths.add(startMonth);
} else {
yearMonths.add(startMonth);
yearMonths.add(endMonth);
}
return yearMonths;
}
public static LocalDateTime str2LocalDateTime(String str) {
str += " 00:00:00";
DateTimeFormatter df = DateTimeFormatter.ofPattern(dateTimePattern);
return LocalDateTime.parse(str, df);
}
public static LocalDateTime getLeftLocalDateTime(String searchDate) {
LocalDateTime left = LocalDateTime.now();
if (searchDate.equals("DAY") || searchDate.equals("TODAY")) {
left = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
} else if (searchDate.equals("WEEK")) {
left = DateConvertUtils.str2LocalDateTime(DateConvertUtils.getWeekStart());
} else if (searchDate.equals("MONTH")) {
left = DateConvertUtils.str2LocalDateTime(DateConvertUtils.getMonthStart());
} else if (searchDate.equals("LAST_MONTH")) {
left = DateConvertUtils.str2LocalDateTime(DateConvertUtils.getLastMonthStart());
}
return left;
}
public static LocalDateTime getRightLocalDateTime(String searchDate) {
LocalDateTime right = LocalDateTime.now();
if (searchDate.equals("DAY") || searchDate.equals("TODAY")) {
right = LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIN);
} else if (searchDate.equals("WEEK")) {
right = DateConvertUtils.str2LocalDateTime(DateConvertUtils.getWeekEnd());
} else if (searchDate.equals("MONTH")) {
right = DateConvertUtils.str2LocalDateTime(DateConvertUtils.getMonthEnd());
} else if (searchDate.equals("LAST_MONTH")) {
right = DateConvertUtils.str2LocalDateTime(DateConvertUtils.getLastMonthEnd());
}
return right;
}
public static Date getBefore3HourDate() {
Date date = new Date();//获取当前时间
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR, -3);
return calendar.getTime();
}
public static Date dateStartDate(Integer day) {
Calendar todayStart = Calendar.getInstance();
todayStart.add(Calendar.DATE, day);
todayStart.set(Calendar.HOUR_OF_DAY, 0);
todayStart.set(Calendar.MINUTE, 0);
todayStart.set(Calendar.SECOND, 0);
todayStart.set(Calendar.MILLISECOND, 0);
return todayStart.getTime();
}
public static Date dateEndDate(Integer day) {
Calendar todayEnd = Calendar.getInstance();
todayEnd.add(Calendar.DATE, day - 1);
todayEnd.set(Calendar.HOUR, 23);
todayEnd.set(Calendar.MINUTE, 59);
todayEnd.set(Calendar.SECOND, 59);
todayEnd.set(Calendar.MILLISECOND, 999);
return todayEnd.getTime();
}
/**
* parse yyyy-MM-dd to LocalDateTime
*
* @param date empty able
* @return {@code null} if {@param date} is empty.
*/
public static LocalDateTime separatedByDash_yyyyMMdd(String date) {
if (StringUtils.isEmpty(date)) {
return null;
}
return LocalDateTime.of(LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd")), LocalTime.MIN);
}
public static LocalDateTime separatedByDash_yyyyMMddWithMaxTime(String date) {
if (StringUtils.isEmpty(date)) {
return null;
}
return LocalDateTime.of(LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd")), LocalTime.MAX);
}
有时间再整理优化一下,先记录下来