<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.7</version>
</dependency>
package com.demo;
import java.lang.management.ManagementFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
public class DateUtil extends DateUtils {
public static String YYYY = "yyyy";
public static String YYYY_MM = "yyyy-MM";
public static String YYYY_MM_DD = "yyyy-MM-dd";
public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
private static String[] parsePatterns = {
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
"yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
public static void main(String[] args) {
DateUtil dateUtil=new DateUtil();
Date date=DateUtil.getNowDate();
System.out.println(DateUtil.getDate());
System.out.println(DateUtil.getTime());
System.out.println(DateUtil.dateTimeNow());
System.out.println(DateUtil.dateTime());
System.out.println(DateUtil.dateChinaTime(date));
System.out.println(DateUtil.parseDateToStr("YYYY-MM", date));
System.out.println(DateUtil.dateTime("YYYY-MM-DD", "2017-10-15"));
System.out.println(DateUtil.datePath());
System.out.println(DateUtil.dateTime());
Date date1=DateUtil.parseDate("2010-10-11");
System.out.println(date1);
System.out.println(DateUtil.getServerStartDate());
System.out.println(DateUtil.getDatePoor(date1, new Date()));
System.out.println(DateUtil.getDayPoor(date1, new Date()));
System.out.println(DateUtil.getDayPoorUp(date1, new Date()));
System.out.println(DateUtil.getYearPoor(date1, new Date()));
System.out.println(DateUtil.getDate(date1, 2));
System.out.println(DateUtil.getBeforeDate(date1, 2));
}
public static Date getNowDate() {
return new Date();
}
public static String getDate() {
return dateTimeNow(YYYY_MM_DD);
}
public static final String getTime() {
return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
}
public static final String dateTimeNow() {
return dateTimeNow(YYYYMMDDHHMMSS);
}
public static final String dateTimeNow(final String format) {
return parseDateToStr(format, new Date());
}
public static final String dateTime(final Date date) {
return parseDateToStr(YYYY_MM_DD, date);
}
public static final String dateChinaTime(final Date date) {
String dateStr = parseDateToStr(YYYYMMDDHHMMSS, date);
String year = dateStr.substring(0,4);
String month = dateStr.substring(4,6);
String day = dateStr.substring(6,8);
return String.format("%s年%s月%s日", year, month, day);
}
public static final String parseDateToStr(final String format, final Date date) {
return new SimpleDateFormat(format).format(date);
}
public static final Date dateTime(final String format, final String ts) {
try {
return new SimpleDateFormat(format).parse(ts);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
public static final String datePath() {
Date now = new Date();
return DateFormatUtils.format(now, "yyyy/MM/dd");
}
public static final String dateTime() {
Date now = new Date();
return DateFormatUtils.format(now, "yyyyMMdd");
}
public static Date parseDate(Object str) {
if (str == null) {
return null;
}
try {
return parseDate(str.toString(), parsePatterns);
} catch (ParseException e) {
return null;
}
}
public static Date getServerStartDate() {
long time = ManagementFactory.getRuntimeMXBean().getStartTime();
return new Date(time);
}
public static String getDatePoor(Date endDate, Date nowDate) {
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
long diff = endDate.getTime() - nowDate.getTime();
long day = diff / nd;
long hour = diff % nd / nh;
long min = diff % nd % nh / nm;
return day + "天" + hour + "小时" + min + "分钟";
}
public static long getDayPoor(Date endDate, Date startDate) {
if(endDate==null||startDate==null){
return 0;
}
long nd = 1000 * 24 * 60 * 60;
long diff = endDate.getTime() - startDate.getTime();
long day = diff / nd;
return day;
}
public static long getDayPoorUp(Date endDate, Date startDate) {
if(endDate==null||startDate==null){
return 0;
}
long nd = 1000 * 24 * 60 * 60;
long diff = endDate.getTime() - startDate.getTime();
long re=diff % nd;
if(re==0){
long day = diff / nd;
return day;
}else {
long day = diff / nd+1;
return day;
}
}
public static long getYearPoor(Date endDate, Date startDate) {
Calendar from = Calendar.getInstance();
from.setTime(startDate);
Calendar to = Calendar.getInstance();
to.setTime(endDate);
long fromYear = from.get(Calendar.YEAR);
long toYear = to.get(Calendar.YEAR);
long year = toYear - fromYear;
return year;
}
public static boolean checkTen(Date endDate,Date startDate) {
if(endDate==null||startDate==null){
return true;
}
boolean result=true;
Calendar calendar=Calendar.getInstance();
calendar.setTime(startDate);
calendar.add(Calendar.YEAR,10);
calendar.set(Calendar.MONTH, calendar.getActualMaximum(Calendar.MONTH));
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMaximum(Calendar.HOUR_OF_DAY));
calendar.set(Calendar.MINUTE, calendar.getActualMaximum(Calendar.MINUTE));
calendar.set(Calendar.SECOND, calendar.getActualMaximum(Calendar.SECOND));
long time= calendar.getTime().getTime();
long endTime=endDate.getTime();
if(endTime>time){
result=false;
}
return result;
}
public static Date getDate(Date date,int days){
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, days);
String format = sf.format(c.getTime());
Date parse = null;
try {
parse = sf.parse(format);
} catch (ParseException e) {
e.printStackTrace();
}
return parse;
}
public static Date getBeforeDate(Date date,int days){
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, -days);
String format = sf.format(c.getTime());
Date parse = null;
try {
parse = sf.parse(format);
} catch (ParseException e) {
e.printStackTrace();
}
return parse;
}
public static Date getAfterMonth(Date date,int months){
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.MONTH, months);
Date d=c.getTime();
return d;
}
}