引入依赖
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.9'
源码
package org.virtue;
import org.apache.commons.lang3.time.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
private static Logger logger = LoggerFactory.getLogger(DateUtil.class);
private static final String FULL_DATE_FORMATE_STR = "yyyy-MM-dd HH:mm:ss";
private static final String SIMPLE_DATE_FORMAT_STR = "yyyy-MM-dd";
public static final String ISO8601_1_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
private static final String FULL_DATE_FORMATE_STR_NOLINES = "yyyyMMddHHmmssSSS";
public static String formatDate(Date date) {
return new SimpleDateFormat(FULL_DATE_FORMATE_STR).format(date);
}
public static String formatDateInSimpleFormat(Date date) {
return new SimpleDateFormat(SIMPLE_DATE_FORMAT_STR).format(date);
}
public static Date parseDate(String dateStr) throws ParseException {
Date date;
try {
date = new SimpleDateFormat(FULL_DATE_FORMATE_STR).parse(dateStr);
} catch (ParseException e) {
date = DateUtil.toDate(dateStr);
}
return date;
}
public static Date toDate(String stringDate) throws ParseException {
try {
return new SimpleDateFormat(FULL_DATE_FORMATE_STR).parse(stringDate);
} catch (ParseException e) {
return new SimpleDateFormat(ISO8601_1_PATTERN).parse(stringDate);
}
}
public static Date dateAddDay(Date curDate, int day) {
return DateUtils.addDays(curDate, day);
}
public static int dateSubDay(Date notBefore, Date notAfter) {
long time1 = notBefore.getTime();
long time2 = notAfter.getTime();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
return Integer.parseInt(String.valueOf(between_days));
}
public static String currentTime() {
return formatDate(new Date());
}
public static Date getDate(Object date) {
if (date == null) {
return null;
}
try {
return DateUtil.parseDate(date.toString());
} catch (ParseException e) {
String usapTimeType = "yyyyMMddHHmmssZZZZ";
try {
SimpleDateFormat format = new SimpleDateFormat(usapTimeType);
return format.parse(date.toString());
} catch (ParseException e1) {
long time = Long.valueOf(date.toString());
return new Date(time);
}
}
}
public static Date parseBJTime(String date) throws ParseException {
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parsedDate = sdf.parse(date);
return parsedDate;
}
public static int getIntDayTime(int year, int month, int day) {
String strMonth = String.valueOf(month).length() < 2 ? "0" + String.valueOf(month) : String.valueOf(month);
String strDay = String.valueOf(day).length() < 2 ? "0" + String.valueOf(day) : String.valueOf(day);
return Integer.valueOf(String.format("%s%s%s", year, strMonth, strDay));
}
public static Date getNewCertNotBefore(){
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
public static Date formatDateAsCertNotBefore(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
return calendar.getTime();
}
public static Date formatDateAsCertNotBefore(String dateStr) throws ParseException{
Date date = parseDate(dateStr);
return formatDateAsCertNotBefore(date);
}
public static Date formatDateAsCertNotAfter(String dateStr) throws ParseException{
Date date = parseDate(dateStr);
return formatDateAsCertNotAfter(date);
}
public static Date formatDateAsCertNotAfter(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
return calendar.getTime();
}
public static Date getNewNotAfter(Date notBefore, Integer validDays){
return formatDateAsCertNotAfter(dateAddDay(notBefore, validDays));
}
public static String formatCurrentInSimpleFormat() {
return new SimpleDateFormat(FULL_DATE_FORMATE_STR_NOLINES).format(new Date());
}
}
``