日期工具类

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {

    /**
     * 获取当前月份的第一天的00:00:00时
     * @return
     */
    public static  Date getMonthFristDay(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH,1);
        calendar.set(Calendar.HOUR,-12);
        calendar.set(Calendar.MINUTE,0);
        calendar.set(Calendar.SECOND,0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 获取当前月份的最后一天的00:00:00时
     * @return
     */
    public static  Date getMonthLastDay(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int month = calendar.get(Calendar.MONTH);
        int lastDay = 0;
        if(month==2) {
            lastDay = calendar.getLeastMaximum(Calendar.DAY_OF_MONTH);
        }else {
            lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        }
        calendar.set(Calendar.DAY_OF_MONTH,lastDay);
        calendar.set(Calendar.HOUR,-12);
        calendar.set(Calendar.MINUTE,0);
        calendar.set(Calendar.SECOND,0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 获取当前月份的指定某天 的00:00:00
     * @return
     */
    public static  Date getMonthSomeday(Date date, int many){
        Calendar calendar = Calendar.getInstance();
        int month = calendar.get(Calendar.MONTH);
        int maxDay = 0;
        if(month==2) {
            maxDay = calendar.getLeastMaximum(Calendar.DAY_OF_MONTH);
        }else {
            maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        }
        if(many > maxDay){
            try{ throw new Exception(); }catch (Exception e){ System.err.println(); }
        }
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH,many);
        calendar.set(Calendar.HOUR,-12);
        calendar.set(Calendar.MINUTE,0);
        calendar.set(Calendar.SECOND,0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 获取当前天的指定小时 eg:  2020-10-01 15:00:00
     * @param date
     * @param many
     * @return
     */
    public static Date getDaySomehour(Date date, int many){
        Calendar calendar = Calendar.getInstance();
        if(many > 12 || many < -12){
            try{ throw new Exception("小时参数填写不在范围内"); }catch (Exception e){ System.err.println("小时参数填写不在范围内"); }
            return null;
        }
        // -12 是零点
        many = many - 12;
        calendar.setTime(date);
        calendar.set(Calendar.HOUR,many);
        calendar.set(Calendar.MINUTE,0);
        calendar.set(Calendar.SECOND,0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }


    /***
     * 获取当前年份的指定月份、指定日期   eg:2020-manyMonth-manyDay 00:00:00
     * @param date
     * @param manyMonth
     * @param manyDay
     * @return
     */
    public static Date getSomeMonthAndSomeDay(Date date, int manyMonth, int manyDay){
        Calendar calendar = Calendar.getInstance();
        if(manyMonth > 12 || manyMonth <0){
            try{ throw new Exception(); }catch (Exception e){ System.err.println("manyMonth参数填写不在范围内"); }
        }
        int maxDay = 0;
        if(manyMonth==2) {
            maxDay = calendar.getLeastMaximum(Calendar.DAY_OF_MONTH);
        }else {
            maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        }
        if(manyDay > maxDay || manyDay < 0){
            try{ throw new Exception(); }catch (Exception e){ System.err.println("manyDay参数填写不在范围内"); }
        }
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH,manyMonth);
        calendar.set(Calendar.DAY_OF_MONTH,manyDay);
        calendar.set(Calendar.HOUR,-12);
        calendar.set(Calendar.MINUTE,0);
        calendar.set(Calendar.SECOND,0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }


    /**
     * 当前年份减去 many后的年份   eg:2020年 - many  = 2019年
     * @param date
     * @param many
     * @return
     */
    public static Date getYearSubMany(Date date, int many){
        Calendar calendar = Calendar.getInstance();
        calendar.getTime();
        int oldYear = calendar.get(Calendar.YEAR);
        int newYear = oldYear - many;
        calendar.set(Calendar.YEAR, newYear);
        return calendar.getTime();
    }


    /**
     * 当前月份减去 many后的月份   eg:2020年5月 - many(1)  = 2020年4月
     * @param date
     * @param many
     * @return
     */
    public static Date getMonthSubMany(Date date, int many){
        Calendar calendar = Calendar.getInstance();
        calendar.getTime();
        int oldMonth = calendar.get(Calendar.MONTH);
        int newMonth = oldMonth - many;
        calendar.set(Calendar.MONTH, newMonth);
        return calendar.getTime();
    }

    /**
     * 日期转换为字符串  格式为 yyyy-MM-dd HH:mm:ss
     * @param date
     * @return
     */
    public static  String dateFormatToSecond(Date date){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formatDate = simpleDateFormat.format(new Date());
        return formatDate;
    }

    /**
     * 日期转换为字符串___自定义格式
     * @param date
     * @return
     */
    public static  String dateFormatToPattern(Date date, String pattern){
        String formatDate = null;
        try {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
            formatDate = simpleDateFormat.format(new Date());
        } catch (Exception e){
            System.err.println("日期格式填写错误");
            e.printStackTrace();
        }
        return formatDate;
    }

    /**
     * 新建一个日期
     *
     * @param year
     * @param month
     * @param day
     * @return
     */
    public static Date newDate(int year, int month, int day) {
        Calendar c = Calendar.getInstance();
        c.clear();
        c.set(year, month - 1, day);
        return c.getTime();
    }

    /**
     * 新建一个日期
     *
     * @param year
     * @param month
     * @param day
     * @param hour
     * @param minute
     * @param second
     * @return
     */
    public static Date newDate(int year, int month, int day, int hour, int minute, int second) {
        Calendar c = Calendar.getInstance();
        c.clear();
        c.set(year, month - 1, day, hour, minute, second);
        return c.getTime();
    }


    /**
     * 获取当前天 23:59:59.999 的时间
     *
     * @param date
     * @return
     */
    public static Date dayEnd(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.set(Calendar.HOUR_OF_DAY, 23);
        c.set(Calendar.MINUTE, 59);
        c.set(Calendar.SECOND, 59);
        c.set(Calendar.MILLISECOND, 999);
        return c.getTime();
    }

    /**
     * 获取指定天 23:59:59.999 的时间
     *
     * @param date
     * @return
     */
    public static Date someDayEnd(Date date, int many) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.set(Calendar.DAY_OF_MONTH, many);
        c.set(Calendar.HOUR_OF_DAY, 23);
        c.set(Calendar.MINUTE, 59);
        c.set(Calendar.SECOND, 59);
        c.set(Calendar.MILLISECOND, 999);
        return c.getTime();
    }
    
    /**
     * 年首
     *
     * @param date
     * @return
     */
    public static Date yearBegin(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.set(Calendar.DAY_OF_YEAR, 1);
        c.set(Calendar.HOUR_OF_DAY, 0);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);
        c.set(Calendar.MILLISECOND, 0);
        return c.getTime();
    }

    /**
     * 年末
     *
     * @param date
     * @return
     */
    public static Date yearEnd(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.set(Calendar.DAY_OF_YEAR, c.getActualMaximum(Calendar.DAY_OF_YEAR));
        c.set(Calendar.HOUR_OF_DAY, 23);
        c.set(Calendar.MINUTE, 59);
        c.set(Calendar.SECOND, 59);
        c.set(Calendar.MILLISECOND, 999);
        return c.getTime();
    }

    /**
     * 增加、减少指定时数
     *
     * @param date
     * @param hour 要增加的时数(减少则为 负数)
     * @return
     */
    public static Date addHour(Date date, int hour) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.HOUR, hour);
        return c.getTime();
    }



    /**
     * 增加、减少指定天数
     *
     * @param date
     * @param day  要增加的天数(减少则为 负数)
     * @return
     */
    public static Date addDay(Date date, int day) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.DATE, day);
        return c.getTime();
    }

    /**
     * 增加、减少指定月数
     *
     * @param date
     * @param month 要增加的月数(减少则为 负数)
     * @return
     */
    public static Date addMonth(Date date, int month) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.MONTH, month);
        return c.getTime();
    }

    /**
     * 增加、减少指定年数
     *
     * @param date
     * @param year 要增加的年数(减少则为 负数)
     * @return
     */
    public static Date addYear(Date date, int year) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.YEAR, year);
        return c.getTime();
    }

    /**
     * 获取两个日期间的天数
     *
     * @param startDate
     * @param endDate
     * @return
     */
    public static int amountDays(Date startDate, Date endDate) {
        long ms = endDate.getTime() - startDate.getTime();
        int ret = (int) (ms / 86400000L);
        return ret;
    }

 /**
     * 判断日期间隔是否超过一个月
     *
     * @param startDt
     * @param endDt
     * @return
     */
    public static boolean checkDate(String startDt, String endDt) {
        Long time = DateUtils.parseLong(endDt) - DateUtils.parseLong(startDt);
        if (((time < 0) ? (-time) : time) > 2678400000L) {
            return true;
        }
        return false;
    }

    /**
     * 判断日期间隔是否超过一个月
     *
     * @param startDt 时间戳格式
     * @param endDt
     * @return
     */
    public static boolean checkTimeDate(String startDt, String endDt) {
        Long time = Long.valueOf(endDt) - Long.valueOf(startDt);
        if (((time < 0) ? (-time) : time) > 2678400000L) {
            return true;
        }
        return false;
    }

    public static void main(String[] args) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = simpleDateFormat.format(getMonthSubMany(new Date(), 1));
        System.out.println(format);

        System.out.println("------------------------------");

        System.out.println(dateFormatToPattern(new Date(), "ygyyy-MM-dd HH:mm:ss"));
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。