1. 导入包
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.oc.mall.cloud.common.core.constant.Constants;
import com.oc.mall.cloud.common.core.exception.CheckedException;
import com.oc.mall.cloud.common.core.util.vo.DateLimitUtilVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Month;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
1.1 日期格式表
格式 | 日期 |
---|
yyyy-MM-dd 23:59:59 | 年月日23时59分59秒 |
yyyyMMdd | 年月日 |
yyyy-MM-dd 00:00:00 | 年月日00时00分00秒 |
yyyy-MM-dd | 年月日 |
2. 方法
1. 获取当前日期,指定格式(String)
public static String nowDate(String DATE_FORMAT) {
SimpleDateFormat dft = new SimpleDateFormat(DATE_FORMAT);
return dft.format(new Date());
}
2. 获取当前日期,指定格式(Date)
public static Date nowDateTimeReturnDate(String DATE_FORMAT) {
SimpleDateFormat dft = new SimpleDateFormat(DATE_FORMAT);
return strToDate(dft.format(new Date()), DATE_FORMAT);
}
3. 指定日期(String)加上天数后的日期返回指定格式(String)
public static final String addDay(String newDate, int num, String pattern) {
SimpleDateFormat format = new SimpleDateFormat(pattern);
try {
Date currdate = format.parse(newDate);
Calendar ca = Calendar.getInstance();
ca.setTime(currdate);
ca.add(Calendar.DATE, num);
return format.format(ca.getTime());
} catch (ParseException e) {
LOGGER.error("转化时间出错,", e);
return null;
}
}
4. 指定日期(Date)加上天数后的日期返回指定格式(String)
/**
* 指定日期加上天数后的日期
*
* @param num 为增加的天数
* @param newDate 创建时间
* @return
*/
public static final String addDay(Date newDate, int num, String pattern) {
SimpleDateFormat format = new SimpleDateFormat(pattern);
Calendar ca = Calendar.getInstance();
ca.setTime(newDate);
ca.add(Calendar.DATE, num);
return format.format(ca.getTime());
}
5. 计算两个时间(Date)之间的天数差(Long)
public static long getTwoDateDays(Date beforeDay, Date afterDay) {
SimpleDateFormat sm = new SimpleDateFormat(Constants.DATE_FORMAT_NUM);
long days = -1;
try {
days = (sm.parse(sm.format(afterDay)).getTime() - sm.parse(sm.format(beforeDay)).getTime()) / (1000 * 3600 * 24);
} catch (Exception e) {
e.printStackTrace();
}
return days;
}
6. 获得昨天日期(String):yyyy-MM-dd HH:mm:ss
public static String getYesterdayStr() {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, -1);
SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return startSdf.format(c.getTime());
}
7. 获得前num天开始日期(String):yyyy-MM-dd 00:00:00
public static String getYesterdayStr1(int num) {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, -num);
SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
return startSdf.format(c.getTime());
}
8. 获得前num天结束日期(String):yyyy-MM-dd 23:59:59
public static String getYesterdayStr2(int num) {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, -num);
SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
return startSdf.format(c.getTime());
}
9. 获得前num天日期(String)指定格式
public static String getYesterdayStr3(int num,String pattern) {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, -num);
SimpleDateFormat startSdf = new SimpleDateFormat(pattern);
return startSdf.format(c.getTime());
}
10. 获得本周第一天(String)yyyy-MM-dd 00:00:00
public static String getWeekStartDay() {
Calendar c = Calendar.getInstance();
c.add(Calendar.WEEK_OF_MONTH, 0);
c.set(Calendar.DAY_OF_WEEK, 2);
SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
return startSdf.format(c.getTime());
}
11. 获得本周最后一天 (String)yyyy-MM-dd 23:59:59
public static String getWeekEndDay3() {
Calendar c = Calendar.getInstance();
c.add(Calendar.WEEK_OF_MONTH, 0);
c.set(Calendar.DAY_OF_WEEK, 1);
SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
return startSdf.format(c.getTime());
}
12. 获得本月最后一天(String)yyyy-MM-dd 23:59:59
public static String getMonthEndDay() {
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
SimpleDateFormat endSdf = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
return endSdf.format(c.getTime());
}
13. 获得上月第一天(String) yyyy-MM-01 00:00:00
public static String getLastMonthStartDay() {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
c.set(Calendar.DAY_OF_MONTH, 1);
SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-01 00:00:00");
return startSdf.format(c.getTime());
}
14. 获得上num月最后一天(String) yyyy-MM-dd 23:59:59
public static String getLastMonthEndDay2(int num) {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -num);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
SimpleDateFormat endSdf = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
return endSdf.format(c.getTime());
}
15. 获得上num月第一天:yyyy-MM-01 00:00:00
public static String getLastMonthStartDay2(int num) {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -num);
c.set(Calendar.DAY_OF_MONTH, num);
SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-01 00:00:00");
return startSdf.format(c.getTime());
}
16. 获得上年第一天(String)yyyy-01-01 00:00:00
public static String getLastYearStartDay() {
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -1);
SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-01-01 00:00:00");
return startSdf.format(c.getTime());
}
17. 获得上年最后一天(String)yyyy-12-31 23:59:59
public static String getLastYearEndDay() {
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -1);
SimpleDateFormat endSdf = new SimpleDateFormat("yyyy-12-31 23:59:59");
return endSdf.format(c.getTime());
}
18. 两个日期之前的相差天数(int)
public static int daysBetween(Date starDate,Date endDate){
Calendar cal = Calendar.getInstance();
cal.setTime(starDate);
long time1 = cal.getTimeInMillis();
cal.setTime(endDate);
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
}