DateUtil
package com.xy.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @ClassName DateUtil
* @Description
* @Author xy
* @Date 2022/6/22
* @Version 1.0
**/
public class DateUtil {
public static enum DATE_FORMAT {
YYYY("yyyy"),
YYYYMM("yyyyMM"),
MMDD("MMdd"),
YYYYMMDD("yyyyMMdd"),
YYYY_MM_DD_HHMISS("yyyy-MM-dd HH:mm:ss"),
HH24MISS("HHmmss"),
HH24MI("HHmm"),
YYYYMMDDHH24MISS("yyyyMMddHHmmss"),
CN1("YYYY年MM月dd日"),
CNS1("YYYY年MM月dd日 星期"),
CNS2("CNS2-YYYY年MM月dd日 星期X"),
CNS3("CNS3-XXXXX年XX月XXXXX日 星期X");
String format = "";
private DATE_FORMAT(String format) {
this.format = format;
}
public String toString() {
return format;
}
}
/**
* 获取日期的前/后n个维度,比如前1年,后3个月
*
* @param d
* @param field Calendar.YEAR MONTH DATE HOUR MINUTE
* @param num
* @return
*/
public static Date getDateAfter(Date d, int field, int num) {
Calendar now = Calendar.getInstance();
now.setTime(d);
now.add(field, num);
return now.getTime();
}
/**
* 前/后 n个月
*
* @param d
* @param month 负数就是前n个月,正数就是后n个月
* @return
*/
public static Date getDateAfterMonth(Date d, int month) {
return getDateAfter(d, Calendar.MONTH, month);
}
/**
* 前/后 n个年
*
* @param d
* @param year
* @return
*/
public static Date getDateAfterYear(Date d, int year) {
return getDateAfter(d, Calendar.YEAR, year);
}
/**
* 前/后 n个天
*
* @param d
* @param day
* @return
*/
public static Date getDateAfterDay(Date d, int day) {
return getDateAfter(d, Calendar.DATE, day);
}
/**
* date 转 string
*
* @param d
* @param format
* @return
*/
public static String dateToString(Date d, DATE_FORMAT format) {
SimpleDateFormat sdf = new SimpleDateFormat(format.toString());
return sdf.format(d);
}
/**
* string 转date
*
* @param str
* @param format
* @return
*/
public static Date str2Date(String str, DATE_FORMAT format) {
SimpleDateFormat sdf = new SimpleDateFormat(format.toString());
try {
return sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取天数差
*
* @param date1
* @param date2
* @return
*/
public static long dayInterval(Date date1, Date date2) {
// getTime 取到是ms /(1000 * 3600 * 24)
return (date2.getTime() - date1.getTime()) / 86400000;
}
/**
* 分钟差
*
* @param date1
* @param date2
* @return
*/
public static long minuteInterval(Date date1, Date date2) {
// getTime 取到是ms /(1000 * 60)
return (date2.getTime() - date1.getTime()) / 60 / 1000;
}
/**
* 取月份最后一天
*
* @param date
* @return
*/
public static String getMonthLastDay(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.MONTH, 1);
c.set(Calendar.DAY_OF_MONTH, 0);
return new SimpleDateFormat("yyyyMMdd").format(c.getTime());
}
/**
* 取月份第一天
*
* @param date
* @return
*/
public static String getMonthFirstDay(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_MONTH, 1);
return new SimpleDateFormat("yyyyMMdd").format(c.getTime());
}
}