常用时间工具类

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

/**
 * 日期工具
 *
 * @author qiaoxingfu
 * @time 2019/9/29
 */
public class DateUtils {

    public static final String DAY_FORMAT = "yyyy-MM-dd";

    public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

    public static Date parseDateByString(String dateString) {
        try {
            return new SimpleDateFormat(DAY_FORMAT).parse(dateString);
        } catch (ParseException e) {
        }
        return null;
    }


    /**
     * 获取当前月的第一天
     */
    public static Date getThisMonthFirstDay() {
        return getThisMonthFirstDay(new Date());
    }

    /**
     * 获取当前月的最后一天
     */
    public static Date getThisMonthLastDay() {
        return getThisMonthLastDay(new Date());
    }

    /**
     * 获取当前月的第一天
     */
    public static Date getThisMonthFirstDay(Date nowDate) {
        Calendar cale = Calendar.getInstance();
        cale.setTime(nowDate);
        cale.add(Calendar.MONTH, 0);
        cale.set(Calendar.DAY_OF_MONTH, 1);
        return cale.getTime();
    }

    /**
     * 获取当前月的最后一天
     */
    public static Date getThisMonthLastDay(Date nowDate) {
        Calendar cale = Calendar.getInstance();
        cale.setTime(nowDate);
        cale.add(Calendar.MONTH, 1);
        cale.set(Calendar.DAY_OF_MONTH, 0);
        return cale.getTime();
    }

    /**
     * 获取当前月的第一天
     */
    public static Date getThisMonthFirstDay00Secend() {
        Calendar cale = Calendar.getInstance();
        cale.add(Calendar.MONTH, 0);
        cale.set(Calendar.DAY_OF_MONTH, 1);
        cale.set(Calendar.HOUR_OF_DAY, 0);
        cale.set(Calendar.MINUTE, 0);
        cale.set(Calendar.SECOND, 0);
        cale.set(Calendar.MILLISECOND, 0);
        return cale.getTime();
    }

    /**
     * 获取上个月的第一天
     */
    public static Date getLastMonthFirstDay() {
        Calendar cale = Calendar.getInstance();
        cale.add(Calendar.MONTH, -1);
        cale.set(Calendar.DAY_OF_MONTH, 1);
        cale.set(Calendar.HOUR_OF_DAY, 0);
        cale.set(Calendar.MINUTE, 0);
        cale.set(Calendar.SECOND, 0);
        cale.set(Calendar.MILLISECOND, 0);
        return cale.getTime();
    }

    /**
     * 获取上个月的最后一天(这个月的第一天凌晨)
     */
    public static Date getLastMonthLastDay() {
        Calendar cale = Calendar.getInstance();
        cale.add(Calendar.MONTH, 0);
        cale.set(Calendar.DAY_OF_MONTH, 0);
        cale.set(Calendar.HOUR_OF_DAY, 23);
        cale.set(Calendar.MINUTE, 59);
        cale.set(Calendar.SECOND, 59);
        return cale.getTime();
    }

    /**
     * 获取指定日期的第几个月的第一天
     *
     * @param date
     * @return
     */
    public static Date getDateMonthFirstDay(Date date, int day) {
        Calendar cale = Calendar.getInstance();
        cale.setTime(date);
        cale.add(Calendar.MONTH, day);
        cale.set(Calendar.DAY_OF_MONTH, 1);
        cale.set(Calendar.HOUR_OF_DAY, 0);
        cale.set(Calendar.MINUTE, 0);
        cale.set(Calendar.SECOND, 0);
        return cale.getTime();
    }


    /**
     * 获取指定日期的第几周的第一天
     */
    public static Date getDateWeekFirstDay(Date date, int day) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        // 将每周第一天设为星期一,默认是星期天
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.add(Calendar.DATE, day * 7);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        return cal.getTime();
    }

    /**
     * 获取本周的第一天
     */
    public static Date getThisWeekFirstDay() {
        Calendar c = Calendar.getInstance();
        int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1;
        if (day_of_week == 0)
            day_of_week = 7;
        c.add(Calendar.DATE, -day_of_week + 1);
        return c.getTime();
    }

    /**
     * 获取上周的第一天
     */
    public static Date getLastWeekFirstDay() {
        Calendar cal = Calendar.getInstance();
        // 将每周第一天设为星期一,默认是星期天
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.add(Calendar.DATE, -1 * 7);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        return cal.getTime();
    }

    /**
     * 获取上周的最后一天
     */
    public static Date getLastWeekLastDay() {
        Calendar cal = Calendar.getInstance();
        // 将每周第一天设为星期一,默认是星期天
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.add(Calendar.DATE, -1 * 7);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);

        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        return cal.getTime();
    }

    /**
     * 获取昨天的00点00分
     */
    public static Date getYestaday00Second() {
        Calendar cale = Calendar.getInstance();
        cale.add(Calendar.DATE, -1);
        cale.set(Calendar.HOUR_OF_DAY, 0);
        cale.set(Calendar.MINUTE, 0);
        cale.set(Calendar.SECOND, 0);
        return cale.getTime();
    }

    /**
     * 获取指定日期的前一天的00点00分
     */
    public static Date getYestadayByToDay(Date date, Integer amount) {
        Calendar cale = Calendar.getInstance();
        cale.setTime(date);
        cale.add(Calendar.DAY_OF_MONTH, amount);
        cale.set(Calendar.HOUR_OF_DAY, 0);
        cale.set(Calendar.MINUTE, 0);
        cale.set(Calendar.SECOND, 0);
        return cale.getTime();
    }

    /**
     * 获取指定日期的第几天的00点00分,
     */
    public static Date getDate00Second(Date date, int day) {
        Calendar cale = Calendar.getInstance();
        cale.setTime(date);
        cale.add(Calendar.DATE, day);
        cale.set(Calendar.HOUR_OF_DAY, 0);
        cale.set(Calendar.MINUTE, 0);
        cale.set(Calendar.SECOND, 0);
        return cale.getTime();
    }

    /**
     * 获取昨天的23点59分59秒
     */
    public static Date getYestaday59Second() {
        Calendar cale = Calendar.getInstance();
        cale.add(Calendar.DATE, -1);
        cale.set(Calendar.HOUR_OF_DAY, 23);
        cale.set(Calendar.MINUTE, 59);
        cale.set(Calendar.SECOND, 59);
        return cale.getTime();
    }

    /**
     * 获取指定日期的第几天的23点59分59秒
     */
    public static Date get59Second(Date date, int day) {
        Calendar cale = Calendar.getInstance();
        cale.setTime(date);
        cale.add(Calendar.DATE, day);
        cale.set(Calendar.HOUR_OF_DAY, 23);
        cale.set(Calendar.MINUTE, 59);
        cale.set(Calendar.SECOND, 59);
        return cale.getTime();
    }

    /**
     * 判断该日期是否是该月的第一天
     *
     * @param date 需要判断的日期
     * @return
     */
    public static boolean isFirstDayOfMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.DAY_OF_MONTH) == 1;
    }

    /**
     * 判断该日期是否是该月的最后一天
     *
     * @param date 需要判断的日期
     * @return
     */
    public static boolean isLastDayOfMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.DAY_OF_MONTH) == calendar
                .getActualMaximum(Calendar.DAY_OF_MONTH);
    }

    /**
     * 判断该日期是否是该周的第一天
     *
     * @param date 需要判断的日期
     * @return
     */
    public static boolean isFirstDayOfWeek(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
        return calendar.get(Calendar.DAY_OF_WEEK) == 2;
    }

    /**
     * 判断该日期是否是该周的最后一天
     *
     * @param date 需要判断的日期
     * @return
     */
    public static boolean isLastDayOfWeek(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
        return calendar.get(Calendar.DAY_OF_WEEK) == 1;
    }

    /**
     * 比较两个时间是否为同一天
     * @param date1
     * @param date2
     * @return
     */
    public static boolean isSameDay(Date date1, Date date2) {
        if (date1 == null || date2 == null) {
            return false;
        }
        SimpleDateFormat fmt = new SimpleDateFormat(DAY_FORMAT);
        return fmt.format(date1).equals(fmt.format(date2));
    }


    /**
     * 指定日期获取周末
     * @param date
     * @return
     */
    public static int getWeekOfDate(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
        if (w < 0)
            w = 0;
        return w;
    }

    /**
     * 将时间转成字符串
     */
    public static String dateToString(Date date) {
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return format.format(date);
        } catch (Exception e) {
        }
        return null;
    }

    /**
     * 将时间转成字符串
     */
    public static String dateToYmdhms(Date date) {
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
            return format.format(date);
        } catch (Exception e) {
        }
        return null;
    }

    /**
     * 将时间转成年月日
     */
    public static String dateToYmd(Date date) {
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            return format.format(date);
        } catch (Exception e) {
        }
        return null;
    }

    /**
     * 将时间转成年月日
     */
    public static String dateToYmd(Date date, String ymd) {
        try {
            SimpleDateFormat format = new SimpleDateFormat(ymd);
            return format.format(date);
        } catch (Exception e) {
        }
        return null;
    }

    /**
     * 获取今天的开始时间
     */
    public static Date getStartTimeOfToday(Date date) {
        Calendar todayStart = Calendar.getInstance();
        todayStart.setTime(date);
        todayStart.set(Calendar.HOUR_OF_DAY, 0);
        todayStart.set(Calendar.MINUTE, 0);
        todayStart.set(Calendar.SECOND, 0);
        todayStart.set(Calendar.MILLISECOND, 0);
        return todayStart.getTime();
    }

    /**
     * 获取今天的结束时间
     */
    public static Date getEndTimeOfToday(Date date) {
        Calendar todayEnd = Calendar.getInstance();
        todayEnd.setTime(date);
        todayEnd.set(Calendar.HOUR_OF_DAY, 23);
        todayEnd.set(Calendar.MINUTE, 59);
        todayEnd.set(Calendar.SECOND, 59);
        todayEnd.set(Calendar.MILLISECOND, 999);
        return todayEnd.getTime();
    }

    /**
     * @return int
     * @title 获取今天还剩多少秒
     */
    public static int getSeconds() {
        Calendar curDate = Calendar.getInstance();
        Calendar tommorowDate =
                new GregorianCalendar(curDate.get(Calendar.YEAR), curDate.get(Calendar.MONTH),
                        curDate.get(Calendar.DATE) + 1, 0, 0, 0);
        return (int) (tommorowDate.getTimeInMillis() - curDate.getTimeInMillis()) / 1000;
    }

    /**
     * 创建一个{DATE_FORMAT}格式的SimpleDateFormat
     *
     * @return SimpleDateFormat
     */
    public static SimpleDateFormat getDateFormat() {
        return new SimpleDateFormat(DAY_FORMAT);
    }

    /**
     * <p> 创建一个dateFormate格式的SimpleDateFormat
     *
     * @param dateFormate 时间格式
     * @return SimpleDateFormat
     */
    public static SimpleDateFormat getDateFormat(String dateFormate) {
        return new SimpleDateFormat(dateFormate);
    }

    /**
     * 根据日期字符串,获取当天开始的时间戳
     *
     * @param date
     * @return
     */
    public static Long getDateBegin(String date) {
        try {
            return getDateFormat().parse(date).getTime();
        } catch (ParseException e) {
            return null;
        }
    }

    /**
     * 根据日期字符串,获取当天结束的时间戳
     *
     * @param date
     * @return
     */
    public static Long getDateEnd(String date) {
        String dateEnd = date + " 23:59:59";
        try {
            return getDateFormat(DATE_FORMAT).parse(dateEnd).getTime();
        } catch (ParseException e) {
            return null;
        }
    }

    /**
     * 时间戳转日期字符串
     *
     * @param timestamp
     * @return
     */
    public static String formatDayTimestamp(Long timestamp) {
        if (timestamp == null) {
            return null;
        }
        Date date = new Date(timestamp);
        return getDateFormat().format(date);
    }

    /**
     * 时间戳转时间字符串
     *
     * @param timestamp
     * @return
     */
    public static String formatTimestamp(Long timestamp) {
        Date date = new Date(timestamp);
        return getDateFormat(DATE_FORMAT).format(date);
    }


    //获取传入日期所在年的第一天
    public static Date getFirstDayDateOfYear(final Date date) {
        final Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        final int last = cal.getActualMinimum(Calendar.DAY_OF_YEAR);
        cal.set(Calendar.DAY_OF_YEAR, last);
        return cal.getTime();
    }

    //获取传入日期所在年的最后一天
    public static Date getLastDayOfYear(final Date date) {
        final Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        final int last = cal.getActualMaximum(Calendar.DAY_OF_YEAR);
        cal.set(Calendar.DAY_OF_YEAR, last);
        return cal.getTime();
    }

    //今年第一天
    public static Date getNowYearFirstDay() {
        Calendar instance = Calendar.getInstance();
        int year = instance.get(Calendar.YEAR);
        instance.set(year, 1, 1);
        return instance.getTime();
    }

    //去年第一天
    public static Date getLastYearFirstDay() {
        Calendar instance = Calendar.getInstance();
        int year = instance.get(Calendar.YEAR);
        instance.set(year - 1, 1, 1);
        return instance.getTime();
    }

    //计算两天天数
    public static int daysBetween(Date smdate, Date bdate) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        smdate = sdf.parse(sdf.format(smdate));
        bdate = sdf.parse(sdf.format(bdate));
        Calendar cal = Calendar.getInstance();
        cal.setTime(smdate);
        long time1 = cal.getTimeInMillis();
        cal.setTime(bdate);
        long time2 = cal.getTimeInMillis();
        long between_days = (time2 - time1) / (1000 * 3600 * 24);

        return Integer.parseInt(String.valueOf(between_days));
    }

    //查询某个时间是否在指定的区间内
    public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {
        Calendar date = Calendar.getInstance();
        date.setTime(nowTime);
        Calendar begin = Calendar.getInstance();
        begin.setTime(beginTime);
        Calendar end = Calendar.getInstance();
        end.setTime(endTime);
        if (date.after(begin) && date.before(end)) {
            return true;
        } else if (nowTime.compareTo(beginTime) == 0 || nowTime.compareTo(endTime) == 0) {
            return true;
        } else {
            return false;
        }
    }

    //获取指定日期的星期一
    public static Date getWeekByDate(Date time) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        cal.setTime(time);
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
        if (1 == dayWeek) {
            cal.add(Calendar.DAY_OF_MONTH, -1);
        }
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        int day = cal.get(Calendar.DAY_OF_WEEK);
        cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
        return cal.getTime();
    }

    //获取指定日期的月初
    public static Date getFirstDayDateOfMonth(final Date date) {
        final Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        final int last = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
        cal.set(Calendar.DAY_OF_MONTH, last);
        return cal.getTime();
    }

    //获取指定日期的月末
    public static Date getLastDayOfMonth(final Date date) {
        final Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        final int last = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        cal.set(Calendar.DAY_OF_MONTH, last);
        return cal.getTime();
    }

    //获取指定日期的周末
    public static Date getLastDayOfWeek(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        if (c.get(Calendar.DAY_OF_WEEK) == 1) {
            return date;
        }
        c.add(Calendar.DATE, 7 - c.get(Calendar.DAY_OF_WEEK) + 1);
        return c.getTime();
    }

    /**
     * 判断两个时间年月是否相等
     *
     * @param date1
     * @param date2
     * @return
     */
    public static Boolean isEqeuals(Date date1, Date date2) {
        Calendar instance = Calendar.getInstance();
        instance.setTime(date1);
        int date1Year = instance.get(Calendar.YEAR);
        int date1Month = instance.get(Calendar.MONTH);
        instance.setTime(date2);
        int date2Year = instance.get(Calendar.YEAR);
        int date2Month = instance.get(Calendar.MONTH);
        return (date1Year == date2Year && date1Month == date2Month);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值