1、代码
import org.jeecg.common.constant.SymbolConstant;
import org.springframework.util.StringUtils;
import java.beans.PropertyEditorSupport;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.YearMonth;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateUtils extends PropertyEditorSupport {
public static ThreadLocal<SimpleDateFormat> date_sdf = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
public static ThreadLocal<SimpleDateFormat> yyyyMMdd = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyyMMdd");
}
};
public static ThreadLocal<SimpleDateFormat> date_sdf_wz = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy年MM月dd日");
}
};
public static ThreadLocal<SimpleDateFormat> time_sdf = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm");
}
};
public static ThreadLocal<SimpleDateFormat> yyyymmddhhmmss = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyyMMddHHmmss");
}
};
public static ThreadLocal<SimpleDateFormat> short_time_sdf = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("HH:mm");
}
};
public static ThreadLocal<SimpleDateFormat> datetimeFormat = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};
private static final long DAY_IN_MILLIS = 24 * 3600 * 1000;
private static final long HOUR_IN_MILLIS = 3600 * 1000;
private static final long MINUTE_IN_MILLIS = 60 * 1000;
private static final long SECOND_IN_MILLIS = 1000;
private static SimpleDateFormat getSdFormat(String pattern) {
return new SimpleDateFormat(pattern);
}
public static Calendar getCalendar() {
return Calendar.getInstance();
}
public static Calendar getCalendar(long millis) {
Calendar cal = Calendar.getInstance();
cal.setTime(new Date(millis));
return cal;
}
public static Date getDate() {
return new Date();
}
public static Date getDate(long millis) {
return new Date(millis);
}
public static String timestamptoStr(Timestamp time) {
Date date = null;
if (null != time) {
date = new Date(time.getTime());
}
return date2Str(date_sdf.get());
}
public static Timestamp str2Timestamp(String str) {
Date date = str2Date(str, date_sdf.get());
return new Timestamp(date.getTime());
}
public static Date str2Date(String str, SimpleDateFormat sdf) {
if (null == str || "".equals(str)) {
return null;
}
Date date = null;
try {
date = sdf.parse(str);
return date;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static String date2Str(SimpleDateFormat dateSdf) {
synchronized (dateSdf) {
Date date = getDate();
if (null == date) {
return null;
}
return dateSdf.format(date);
}
}
public static String dateformat(String date, String format) {
SimpleDateFormat sformat = new SimpleDateFormat(format);
Date nowDate = null;
try {
nowDate = sformat.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return sformat.format(nowDate);
}
public static String date2Str(Date date, SimpleDateFormat dateSdf) {
synchronized (dateSdf) {
if (null == date) {
return null;
}
return dateSdf.format(date);
}
}
public static String getDate(String format) {
Date date = new Date();
if (null == date) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
public static Timestamp getTimestamp(long millis) {
return new Timestamp(millis);
}
public static Timestamp getTimestamp(String time) {
return new Timestamp(Long.parseLong(time));
}
public static Timestamp getTimestamp() {
return new Timestamp(System.currentTimeMillis());
}
public static String now() {
return datetimeFormat.get().format(getCalendar().getTime());
}
public static Timestamp getTimestamp(Date date) {
return new Timestamp(date.getTime());
}
public static Timestamp getCalendarTimestamp(Calendar cal) {
return new Timestamp(cal.getTime().getTime());
}
public static Timestamp gettimestamp() {
Date dt = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowTime = df.format(dt);
java.sql.Timestamp buydate = java.sql.Timestamp.valueOf(nowTime);
return buydate;
}
public static long getMillis() {
return System.currentTimeMillis();
}
public static long getMillis(Calendar cal) {
return cal.getTime().getTime();
}
public static long getMillis(Date date) {
return date.getTime();
}
public static long getMillis(Timestamp ts) {
return ts.getTime();
}
public static String formatDate() {
return date_sdf.get().format(getCalendar().getTime());
}
public static String formatDateTime() {
return datetimeFormat.get().format(getCalendar().getTime());
}
public static String formatDateTime(Date date) {
return datetimeFormat.get().format(date);
}
public static String getDataString(SimpleDateFormat formatstr) {
synchronized (formatstr) {
return formatstr.format(getCalendar().getTime());
}
}
public static String formatDate(Calendar cal) {
return date_sdf.get().format(cal.getTime());
}
public static String formatDate(Date date) {
return date_sdf.get().format(date);
}
public static String formatDate(long millis) {
return date_sdf.get().format(new Date(millis));
}
public static String formatDate(String pattern) {
return getSdFormat(pattern).format(getCalendar().getTime());
}
public static String formatDate(Calendar cal, String pattern) {
return getSdFormat(pattern).format(cal.getTime());
}
public static String formatDate(Date date, String pattern) {
return getSdFormat(pattern).format(date);
}
public static String formatTime() {
return time_sdf.get().format(getCalendar().getTime());
}
public static String formatTime(long millis) {
return time_sdf.get().format(new Date(millis));
}
public static String formatTime(Calendar cal) {
return time_sdf.get().format(cal.getTime());
}
public static String formatTime(Date date) {
return time_sdf.get().format(date);
}
public static Date parseFormatTime(String str) {
try {
return time_sdf.get().parse(str);
} catch (Exception e) {
}
return null;
}
public static String formatShortTime() {
return short_time_sdf.get().format(getCalendar().getTime());
}
public static String formatShortTime(long millis) {
return short_time_sdf.get().format(new Date(millis));
}
public static String formatShortTime(Calendar cal) {
return short_time_sdf.get().format(cal.getTime());
}
public static String formatShortTime(Date date) {
return short_time_sdf.get().format(date);
}
public static Date parseDate(String src, String pattern) throws ParseException {
return getSdFormat(pattern).parse(src);
}
public static Calendar parseCalendar(String src, String pattern) throws ParseException {
Date date = parseDate(src, pattern);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal;
}
public static String formatAddDate(String src, String pattern, int amount) throws ParseException {
Calendar cal;
cal = parseCalendar(src, pattern);
cal.add(Calendar.DATE, amount);
return formatDate(cal);
}
public static Date formatAddMinute(Date now, int amount) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
calendar.add(Calendar.MINUTE, amount);
return calendar.getTime();
}
public static Timestamp parseTimestamp(String src, String pattern) throws ParseException {
Date date = parseDate(src, pattern);
return new Timestamp(date.getTime());
}
public static int dateDiff(char flag, Calendar calSrc, Calendar calDes) {
long millisDiff = getMillis(calSrc) - getMillis(calDes);
char year = 'y';
char day = 'd';
char hour = 'h';
char minute = 'm';
char second = 's';
if (flag == year) {
return (calSrc.get(Calendar.YEAR) - calDes.get(Calendar.YEAR));
}
if (flag == day) {
return (int) (millisDiff / DAY_IN_MILLIS);
}
if (flag == hour) {
return (int) (millisDiff / HOUR_IN_MILLIS);
}
if (flag == minute) {
return (int) (millisDiff / MINUTE_IN_MILLIS);
}
if (flag == second) {
return (int) (millisDiff / SECOND_IN_MILLIS);
}
return 0;
}
public static Long getCurrentTimestamp() {
return Long.valueOf(DateUtils.yyyymmddhhmmss.get().format(new Date()));
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
if (StringUtils.hasText(text)) {
try {
int length10 = 10;
int length19 = 19;
if (text.indexOf(SymbolConstant.COLON) == -1 && text.length() == length10) {
setValue(DateUtils.date_sdf.get().parse(text));
} else if (text.indexOf(SymbolConstant.COLON) > 0 && text.length() == length19) {
setValue(DateUtils.datetimeFormat.get().parse(text));
} else {
throw new IllegalArgumentException("Could not parse date, date format is error ");
}
} catch (ParseException ex) {
IllegalArgumentException iae = new IllegalArgumentException("Could not parse date: " + ex.getMessage());
iae.initCause(ex);
throw iae;
}
} else {
setValue(null);
}
}
public static int getYear() {
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(getDate());
return calendar.get(Calendar.YEAR);
}
public static Date parseDatetime(String str) {
try {
return datetimeFormat.get().parse(str);
} catch (Exception e) {
}
return null;
}
public static boolean isSameDay(Date date1, Date date2) {
if (date1 == null || date2 == null) {
return false;
}
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
boolean isSameYear = calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
boolean isSameMonth = isSameYear && calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH);
return isSameMonth && calendar1.get(Calendar.DAY_OF_MONTH) == calendar2.get(Calendar.DAY_OF_MONTH);
}
public static boolean isSameWeek(Date date1, Date date2) {
if (date1 == null || date2 == null) {
return false;
}
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
boolean isSameYear = calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
return isSameYear && calendar1.get(Calendar.WEEK_OF_YEAR) == calendar2.get(Calendar.WEEK_OF_YEAR);
}
public static boolean isSameMonth(Date date1, Date date2) {
if (date1 == null || date2 == null) {
return false;
}
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
boolean isSameYear = calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
return isSameYear && calendar1.get(Calendar.MONTH) == calendar2.get(Calendar.MONTH);
}
public static boolean isSameYear(Date date1, Date date2) {
if (date1 == null || date2 == null) {
return false;
}
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(date2);
return calendar1.get(Calendar.YEAR) == calendar2.get(Calendar.YEAR);
}
public static int pastDaysOfTheMonth() {
LocalDate today = LocalDate.now();
YearMonth currentYearMonth = YearMonth.from(today);
LocalDate firstDayOfMonth = currentYearMonth.atDay(1);
return (int) ChronoUnit.DAYS.between(firstDayOfMonth, today);
}
public static int isSameYear() {
LocalDate today = LocalDate.now();
DayOfWeek dayOfWeek = today.getDayOfWeek();
int dayOfWeekIndex = dayOfWeek.getValue() - 1;
int daysPassed = (dayOfWeekIndex + 1) % 7;
daysPassed = (int) ChronoUnit.DAYS.between(today.with(DayOfWeek.MONDAY), today);
return daysPassed;
}
}
2、效果