计算日期工具类

简介: 计算日期工具类
package utils;
import org.apache.commons.lang.StringUtils;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
 * 〈计算日期工具类〉
 *
 * @author Barrett
 * @version 1.0.0
 * @time 2019/12/16
 */
public class DateUtil {
    private static final String DATE_FORMART = "yyyy-M-dd HH:mm:ss";
    public static void main(String[] args) {
        int second = 60;
        int day = 5;
        int addMonthLen = 2;
        String dateFormart1 = "yyyy-M-dd";
        String linkSymbol = "-";
    }
    /**
     * @Author Barrett
     * @Date 9:08 2020/1/11
     * @Description 获取字符串类型的当前时间
     */
    public static String getCurrentDateByYMDHMS() {
        Date dd = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String now = sdf.format(dd);
        return now;
    }
    /**
     * @Author Barrett
     * @Date 9:08 2020/1/11
     * @Description 获取当前时间的年月日
     */
    public static String getCurrentDateByYMD() {
        Date dd = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        return sdf.format(dd);
    }
    /**
     * @Author Barrett
     * @Date 9:16 2020/1/11
     * @Description date转str
     */
    public static String dateToString(Date date) {
        SimpleDateFormat format = new SimpleDateFormat(DATE_FORMART);
        return format.format(date);
    }
    /**
     * @Author Barrett
     * @Date 8:45 2020/1/11
     * @Description str转date
     */
    public static Date stringToDate(String str) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-M-dd HH:mm:ss");
        Date date = null;
        try {
            date = format.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
    /**
     * @Author Barrett
     * @Date 19:03 2020/1/10
     * @Description 按照指定格式将字符串时间转成date
     */
    public static Date createDateByString(String dateString, String dateFormat) {
        Date date = null;
        DateFormat df = new SimpleDateFormat(dateFormat);
        try {
            date = df.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
    /**
     * @Author Barrett
     * @Date 18:26 2020/1/10
     * @Description 获取当前时间前N秒的时间,格式:yyyy-MM-dd HH:mm:ss
     */
    public static String getDateTimeBeforeSecond(int second) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar c = new GregorianCalendar();
        Date date = new Date();
        c.setTime(date);                 //设置参数时间
        c.add(Calendar.SECOND, -second);  //把日期往后增加SECOND 秒.整数往后推,负数往前移动
        date = c.getTime();                //这个时间就是日期往后推一天的结果
        return df.format(date);
    }
    /**
     * @Author Barrett
     * @Date 18:26 2020/1/10
     * @Description 获取当前时间前N天的时间,格式:Fri Jan 10 18:31:17 CST 2020
     */
    public static Date getDateBefore(Date d, int day) {
        Calendar now = Calendar.getInstance();
        now.setTime(d);
        now.set(Calendar.DATE, now.get(Calendar.DATE) - day);
        return now.getTime();
    }
    /**
     * Date add month
     */
    /**
     * @Author Barrett
     * @Date 18:26 2020/1/10
     * @Description 获取当前时间+N个月的时间,格式:2020-02-10 00:00:00
     */
    public static String getDateAddMonth(Date dd, int addMonthLen) {
        Calendar Cal = Calendar.getInstance();
        Cal.setTime(dd);
        Cal.add(Calendar.MONTH, addMonthLen);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
        return sdf.format(Cal.getTime());
    }
    /**
     * @Author Barrett
     * @Date 18:35 2020/1/10
     * @Description 格式化当前时间为00时,格式:2020-01-10 00:00:00
     */
    public static String getCurrentDateByHMSZeroZeroZero(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
        return sdf.format(date);
    }
    /**
     * @Author Barrett
     * @Date 16:20 2020/1/4
     * @Description 按照指定格式格式化当前时间
     * 例如 dateFormart = yyyy-MM-dd 00:59:99
     * 返回:2020-01-04 00:59:99
     */
    public static String getYMDHMbeforeMinute(Date date, int sMinute, String dateFormart) {
        Calendar now = Calendar.getInstance();
        now.setTime(date);
        now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) - sMinute);
        Date dd = now.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormart);
        return sdf.format(dd);
    }
    /**
     * @Author Barrett
     * @Date 16:23 2020/1/4
     * @Description 计算当前时间为本周的第几天:从周日开始算到周六
     */
    public static int getWeekNum(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.DAY_OF_WEEK);
    }
    /**
     * @Author Barrett
     * @Date 18:44 2020/1/10
     * @Description 按照指定格式计算两个时间相差几天
     * smdate:2020-01-04
     * bdate:2020-01-10
     * dateFormat:yyyy-MM-dd
     * 返回6
     */
    public static int countDaysBetween(String smdate, String bdate, String dateFormat) {
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        Calendar cal = Calendar.getInstance();
        long between_days = 0;
        try {
            cal.setTime(sdf.parse(smdate));
            long time1 = cal.getTimeInMillis();
            cal.setTime(sdf.parse(bdate));
            long time2 = cal.getTimeInMillis();
            between_days = (time2 - time1) / (1000 * 3600 * 24);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return Integer.parseInt(String.valueOf(between_days));
    }
    /**
     * @Author Barrett
     * @Date 18:46 2020/1/10
     * @Description 按指定格式获取当前时间的月末时间
     * dateFormat="yyyy-MM-dd HH:mm:ss"
     * 2020-01-31 18:48:46
     */
    public static String getSomeMonthLastDay(Date date, String dateFormat) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        int value = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        cal.set(Calendar.DAY_OF_MONTH, value);
        return new SimpleDateFormat(dateFormat).format(cal.getTime());
    }
    /**
     * @Author Barrett
     * @Date 18:46 2020/1/10
     * @Description 设置当前时间的月和日
     * linkSymbol="-"
     * monthAmount=7
     * newDay=8
     * 返回:2020-8-8
     */
    public static String getDynamicMonthYMD(Date date, String linkSymbol, int monthAmount, int newDay) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, newDay);
        calendar.add(Calendar.MONTH, monthAmount);
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        return String.valueOf(year + linkSymbol + month + linkSymbol + day);
    }
    /**
     * @Author Barrett
     * @Date 18:46 2020/1/10
     * @Description 设置当前时间的月和日
     * linkSymbol="-"
     * newDay=8
     * 返回:2020-1-8
     */
    public static String getYMD(Date date, String linkSymbol, int newDay) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, newDay);
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        return String.valueOf(year + linkSymbol + month + linkSymbol + day);
    }
    /**
     * @Author Barrett
     * @Date 18:46 2020/1/10
     * @Description 将当前时间按照linkSymbol进行连接
     * linkSymbol="-"
     * 2020-01-10
     */
    public static String getYMD(Date date, String linkSymbol) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        return String.valueOf(year + linkSymbol + (month < 10 ? "0" + month : month) + linkSymbol + (day < 10 ? "0" + day : day));
    }
    /**
     * @Author Barrett
     * @Date 8:45 2020/1/11
     * @Description 当前时间的前num天
     */
    public static Date subDay(Date date, int num) {
        Calendar time = Calendar.getInstance();
        num = -num;
        time.setTime(date);
        time.add(Calendar.DAY_OF_MONTH, num);
        return time.getTime();
    }
    /**
     * @Author Barrett
     * @Date 8:45 2020/1/11
     * @Description 获取当前时间+minutes分钟后的时间
     */
    public static Date getDateAfterMinute(Date date, int minutes) {
        Calendar now = Calendar.getInstance();
        now.setTime(date);
        now.set(Calendar.MINUTE, now.get(Calendar.MINUTE) + minutes);
        return now.getTime();
    }
    /**
     * @Author Barrett
     * @Date 8:53 2020/1/11
     * @Description 判断当前字符串在当前格式以内
     */
    public static boolean isDateType(String dateFormat, String dateString) {
        boolean isDateTypeFlag = true;
        DateFormat df = new SimpleDateFormat(dateFormat);
        try {
            df.parse(dateString);
        } catch (ParseException e) {
            isDateTypeFlag = false;
        }
        return isDateTypeFlag;
    }
    /**
     * @Author Barrett
     * @Date 8:53 2020/1/11
     * @Description 比较oldDate和newDate
     * oldDate < newDate == -1
     */
    public static int compareDates(Date oldDate, Date newDate) {
        Calendar oldCal = Calendar.getInstance();
        Calendar newCal = Calendar.getInstance();
        oldCal.setTime(oldDate);
        newCal.setTime(newDate);
        if (oldCal.equals(newCal)) {
            return 0;
        } else if (oldCal.before(newCal)) {
            return -1;
        } else {
            return 1;
        }
    }
    /**
     * @Author Barrett
     * @Date 8:53 2020/1/11
     * @Description 按照指定时间返回date类型时间
     */
    public static Date getDateByYMDHMS(int year, int month, int day, int hour, int minute, int second) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month - 1);
        calendar.set(Calendar.DAY_OF_MONTH, day);
        calendar.set(Calendar.HOUR_OF_DAY, hour);
        calendar.set(Calendar.MINUTE, minute);
        calendar.set(Calendar.SECOND, second);
        return calendar.getTime();
    }
    /**
     * @Author Barrett
     * @Date 9:08 2020/1/11
     * @Description num天后的时间
     */
    public static Date addDay(Date date, int num) {
        Calendar time = Calendar.getInstance();
        time.setTime(date);
        time.add(Calendar.DAY_OF_MONTH, num);
        return time.getTime();
    }
    /**
     * @Author Barrett
     * @Date 9:08 2020/1/11
     * @Description 按照指定格式返回当前时间
     */
    public static String getDateString(String format) {
        String dateStr;
        if (StringUtils.isBlank(format)) {
            format = "yyyy-MM-dd-HH:mm:ss";
        }
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        dateStr = formatter.format(calendar.getTime());
        return dateStr;
    }
    /**
     * @Author Barrett
     * @Date 9:08 2020/1/11
     * @Description 传入时分秒返回当前时间
     */
    public static Date getDateByHMS(int hour, int minute, int secord) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, hour);
        calendar.set(Calendar.MINUTE, minute);
        calendar.set(Calendar.SECOND, secord);
        return calendar.getTime();
    }
    /**
     * @Author Barrett
     * @Date 9:08 2020/1/11
     * @Description 返回当天的凌晨时间
     */
    public static String getCurrentDateByHMSZeroZeroZero() {
        Date dd = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
        return sdf.format(dd);
    }
    /**
     * @Author Barrett
     * @Date 10:53 2020/1/10
     * @Description 将字符串格式日期转成指定格式字符串返回
     */
    public static String parseToFormat(String payTime) {
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            payTime = format.format(format.parse(payTime));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return payTime;
    }
}
目录
相关文章
|
12月前
|
存储 数据处理
数据的表示及计算
数据在计算机系统中以二进制形式表示和计算。二进制是一种由0和1组成的数字系统,计算机使用二进制来表示和处理数据。
32 0
|
Java
使用BML进行计算
使用BML进行计算
112 0
|
4月前
|
运维 Serverless 数据库
函数计算产品使用问题之如何并行运算函数计算任务,并对任务计算后的结果再进行聚合运算
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
什么是菲涅尔区?如何计算?
【8月更文挑战第23天】
219 0
|
4月前
|
Serverless 编解码 运维
函数计算应用
本文介绍函数计算的典型应用场景,包括Web应用、数据ETL处理、AI推理、视频转码等。
167 9
|
5月前
|
存储 NoSQL Unix
乘法逆元的计算
乘法逆元的计算
51 0
|
11月前
|
人工智能 数据处理 云计算
刊首语|计算到底是算什么
刊首语/EDITORS' NOTE
98 0
|
机器学习/深度学习 算法 数据挖掘
计算GMAC和GFLOPS
GMAC 代表“Giga Multiply-Add Operations per Second”(每秒千兆乘法累加运算),是用于衡量深度学习模型计算效率的指标。它表示每秒在模型中执行的乘法累加运算的数量,以每秒十亿 (giga) 表示。
294 0
计算GMAC和GFLOPS
计算职工工资
计算职工工资
101 0