常用时间工具方法

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)

/**
 * 获取当前日期,指定格式
 * 描述:<描述函数实现的功能>.
 *
 * @return
 */
public static String nowDate(String DATE_FORMAT) {
    SimpleDateFormat dft = new SimpleDateFormat(DATE_FORMAT);
    return dft.format(new Date());
}

2. 获取当前日期,指定格式(Date)

/**
 * 获取当前日期,指定格式
 * 描述:<描述函数实现的功能>.
 *
 * @return
 */
public static Date nowDateTimeReturnDate(String DATE_FORMAT) {
    SimpleDateFormat dft = new SimpleDateFormat(DATE_FORMAT);
    return strToDate(dft.format(new Date()), DATE_FORMAT);
}

3. 指定日期(String)加上天数后的日期返回指定格式(String)

/**
 * 指定日期加上天数后的日期
 *
 * @param num     为增加的天数
 * @param newDate 创建时间
 * @return
 */
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)

/**
 * 计算两个时间之间的天数差
 * @param beforeDay 开始时间
 * @param afterDay  结束时间
 * @return  相差天数
 */
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

/** 获得昨天日期: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

/** 获得前num天开始日期:yyyy-MM-dd  HH:mm:ss */
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

/** 获得前num天结束日期:yyyy-MM-dd  HH:mm:ss */
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)指定格式

/** 获得前num天日期:yyyyMMdd */
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

/** 1-3获得本周第一天:yyyy-MM-dd HH:mm:ss */
   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

/**2-3 获得本周最后一天:yyyy-MM-dd HH:mm:ss */
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

/** 获得本月最后一天:yyyy-MM-dd HH:mm:ss */
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

/** 获得上月第一天:yyyy-MM-dd HH:mm:ss */
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

/** 获得上num月最后一天:yyyy-MM-dd HH:mm:ss */
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

/** 获得上num月第一天:yyyy-MM-dd HH:mm:ss */
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


/** 获得上年第一天:yyyy-MM-dd HH:mm:ss */
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

/** 获得上年最后一天:yyyy-MM-dd HH:mm:ss */
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)

/**
 *  两个日期之前的相差天数
 * @param starDate 开始日期
 * @param endDate 结束日期
 * @return 相差天数
 */
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));

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XuDream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值