Date工具类
package com.sxf.oms.web.common;
import org.apache.commons.lang3.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtils {
public static String format(Date d, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(d);
}
public static String getYmdDate() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String retStr = sdf.format(new Date());
return retStr;
}
public static String getHmsTime() {
SimpleDateFormat sdf = new SimpleDateFormat("HHmmss");
String retStr = sdf.format(new Date());
return retStr;
}
public static String getYmdHmsDate() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String retStr = sdf.format(new Date());
return retStr;
}
public static String getStringData(String dataFormat) {
SimpleDateFormat sdf = new SimpleDateFormat(dataFormat);
String retStr = sdf.format(new Date());
return retStr;
}
public static Date addHourOfDay(Date date, int delta) {
final Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.HOUR_OF_DAY, delta);
return c.getTime();
}
public static Date addHourOfDay(int delta) {
final Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.HOUR_OF_DAY, delta);
return c.getTime();
}
public static String addMinute(String date, String n) {
SimpleDateFormat s = new SimpleDateFormat("yyyyMMddHHmmss");
Date d;
try {
d = s.parse(date);
final Calendar c = Calendar.getInstance();
c.setTime(d);
c.add(Calendar.MINUTE, Integer.parseInt(n));
return s.format(c.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static Date addMinute(Date date, int delta) {
final Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.MINUTE, delta);
return c.getTime();
}
public static Date addMinute(int delta) {
final Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.MINUTE, delta);
return c.getTime();
}
public static String formatDt(String dt) {
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
try {
Date d = sf.parse(dt);
SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd");
return sf2.format(d);
} catch (ParseException e) {
e.printStackTrace();
return dt;
}
}
public static String formatDtms(String dt) {
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
try {
Date d = sf.parse(dt);
SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sf2.format(d);
} catch (ParseException e) {
e.printStackTrace();
return dt;
}
}
public static String formatYmd(String str) throws ParseException {
Date parse=new SimpleDateFormat("yyyy-MM-dd").parse(str);
String dateString = new SimpleDateFormat("yyyyMMdd").format(parse);
return dateString;
}
public static String formatYmd2(String str){
Date parse;
String dateString="";
try {
parse = new SimpleDateFormat("yyyy-MM-dd").parse(str);
dateString = new SimpleDateFormat("yyyyMMdd").format(parse);
} catch (ParseException e) {
e.printStackTrace();
}
return dateString;
}
public static String formatTm(String tm) {
SimpleDateFormat sf = new SimpleDateFormat("HHmmss");
try {
Date d = sf.parse(tm);
SimpleDateFormat sf2 = new SimpleDateFormat("HH:mm:ss");
return sf2.format(d);
} catch (ParseException e) {
e.printStackTrace();
return tm;
}
}
public static String formatDtTm(String dt) {
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
try {
Date d = sf.parse(dt);
SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sf2.format(d);
} catch (ParseException e) {
e.printStackTrace();
return dt;
}
}
public static String addCycleAfterNow(String preFixTime, String cycle) {
SimpleDateFormat s = new SimpleDateFormat("yyyyMMddHHmmss");
try {
Date d = s.parse(preFixTime);
Date n = new Date();
long next = n.getTime() / 1000
+ (60 * 60L - (n.getTime() / 1000 - d.getTime() / 1000) % 3600);
System.out.println(next * 1000);
String nextPreFixTime = s.format(new Date(next * 1000));
return nextPreFixTime;
} catch (ParseException e) {
return getYmdHmsDate();
}
}
public static Date getMonthAfternDate(int n) {
Calendar startCalendar = Calendar.getInstance();
startCalendar.add(Calendar.MONTH, n);
return startCalendar.getTime();
}
public static String getMonthAfternStr(int n) {
return format(getMonthAfternDate(n), "yyyyMM");
}
public static boolean checkInviteDate(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
if (StringUtils.isEmpty(dateStr)) {
return false;
}
try {
Date date = sdf.parse(dateStr);
Date today = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(today);
calendar.add(Calendar.DAY_OF_MONTH, -1);
Date myDate = calendar.getTime();
if (date.after(myDate)) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return false;
}
public static String plusDate(String ymd, int dayNum) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
try {
Date date = sdf.parse(ymd);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, dayNum);
Date newDate = calendar.getTime();
return sdf.format(newDate);
} catch (Exception e) {
return ymd;
}
}
public static Long getDatePoorDay(String endDateStr, String nowDateStr) {
long nd = 1000 * 24 * 60 * 60L;
long nh = 1000 * 60 * 60L;
long nm = 1000 * 60L;
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
long diff = 0;
try {
diff = format.parse(endDateStr).getTime() - format.parse(nowDateStr).getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return diff / nd;
}
public static int getMonthDiff(Date d1, Date d2) {
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(d1);
c2.setTime(d2);
int year1 = c1.get(Calendar.YEAR);
int year2 = c2.get(Calendar.YEAR);
int month1 = c1.get(Calendar.MONTH);
int month2 = c2.get(Calendar.MONTH);
int day1 = c1.get(Calendar.DAY_OF_MONTH);
int day2 = c2.get(Calendar.DAY_OF_MONTH);
int yearInterval = year1 - year2;
if (month1 < month2 || month1 == month2 && day1 < day2) {
yearInterval--;
}
int monthInterval = (month1 + 12) - month2;
if (day1 < day2) {
monthInterval--;
}
monthInterval %= 12;
int monthsDiff = Math.abs(yearInterval * 12 + monthInterval);
return monthsDiff;
}
public static String getMonthOfYearLastMonth(Date d) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Calendar ca = Calendar.getInstance();
ca.setTime(d);
ca.add(Calendar.MONTH, -1);
d = ca.getTime();
String enddate = format.format(d);
return enddate;
}
public static String getMonthOfYearNextDay(Date d) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Calendar ca = Calendar.getInstance();
ca.setTime(d);
ca.add(Calendar.DATE, -1);
d = ca.getTime();
String enddate = format.format(d);
return enddate;
}
public static String getDayOfMonthLastDay(String date) throws ParseException {
SimpleDateFormat s = new SimpleDateFormat("yyyyMMdd");
Calendar c = Calendar.getInstance();
c.setTime(s.parse(date));
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
return s.format(c.getTime());
}
public static String getLastDayOfMonth(String date) {
SimpleDateFormat format1 = new SimpleDateFormat("yyyyMM");
SimpleDateFormat format2 = new SimpleDateFormat("yyyyMMdd");
Calendar cDay1 = Calendar.getInstance();
try {
cDay1.setTime(format1.parse(date));
} catch (ParseException e) {
e.printStackTrace();
}
final int lastDay = cDay1.getActualMaximum(Calendar.DAY_OF_MONTH);
Date lastDate = cDay1.getTime();
lastDate.setDate(lastDay);
String lastDateFormat = format2.format(lastDate);
return lastDateFormat;
}
public static void main(String[] args) throws ParseException {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String ds1 = new String("2022-02-14");
String ds2 = new String("2023-02-14");
Date parse = df.parse(ds1);
Date parse2 = df.parse(ds2);
System.out.println(parse);
System.out.println(parse2);
}
}