首页 > 编程语言 > 详细

(全)JAVA时间计算工具类/得到两个日期间的天数/获取不带时分秒的日期/得到Util类型的Date/获得两个日期间的月数/根据日期获取当天是周几

时间:2020-08-10 17:17:52      阅读:677      评论:0      收藏:0      [点我收藏+]
import java.sql.Time;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class DateUtil {

    public static String dateFormat(Date date, String dateFormat) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
        return simpleDateFormat.format(date);
    }

    /**
     * 得到两个日期间的天数
     *
     * @param startDate 开始日期
     * @param endDate   结束
     * @return
     */
    public static Long getDays(Date startDate, Date endDate) {
        long time = startDate.getTime() - endDate.getTime();
        long day = time / (1000 * 60 * 60 * 24);
        return day;
    }

    /**
     * 获取不带时分秒的日期
     */
    public static Date getDateNoTime(Date date) {
        String dateStr = DateUtil.dateFormat(new Date(), "yyyy-MM-dd");
        return DateUtil.dateStrToDate(dateStr, "yyyy-MM-dd");
    }

    /**
     * 得到Util类型的Date
     */
    public static Date getUtilDate(Date date) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String dateStr = simpleDateFormat.format(date);
        try {
            date = simpleDateFormat.parse(dateStr);
            return date;
        } catch (ParseException e) {
            return null;
        }
    }

    public static Date addDay(Date date, int days) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, 1);
        return calendar.getTime();
    }

    public static Date dateStrToDate(String dateStr, String dateFormat) {
        if (ObjectUtil.isEmpty(dateStr)) {
            return null;
        }
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
        try {
            return simpleDateFormat.parse(dateStr);
        } catch (ParseException e) {
            return null;
        }
    }

    public static Date addDays(Date date, int days) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, days);
        return new Date(calendar.getTimeInMillis());
    }

    public static Integer weekDay(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.DAY_OF_WEEK);
    }

    /**
     * 获得两个日期间的月数
     */
    public static Integer getMonths(String startDate, String endDate, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date begin = null;
        Date end = null;
        try {
            begin = sdf.parse(startDate);
            end = sdf.parse(endDate);
            int months = (end.getYear() - begin.getYear()) * 12 + (end.getMonth() - begin.getMonth());
            return months;
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 得到传入日期的月份开始日期
     */
    public static String getDateMonthStartDate(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
        return dateFormat(cal.getTime(), "yyyy-MM-dd");
    }

    /**
     * 获取日期年份
     */
    public static Integer getYearByDate(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.YEAR);
    }

    /**
     * 得到传入日期的月份结束日期
     */
    public static String getDateMonthEndDate(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        return dateFormat(cal.getTime(), "yyyy-MM-dd");
    }

    public static Date formatDateWithUTC(String dateStr) {
        try {
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd‘T‘HH:mm:ss‘Z‘");
            df.setTimeZone(TimeZone.getTimeZone("UTC"));
            return df.parse(dateStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static Time timeStrToTime(String timeStr) {
        SimpleDateFormat format = new SimpleDateFormat("HH:mm");
        java.util.Date d = null;
        try {
            d = format.parse(timeStr);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return new Time(d.getTime());
    }

    /**
     * 获取传入日期后的第一个周几
     *
     * @param date
     * @param weekDay
     * @return
     */
    public static Date getDateNextWeekDay(Date date, Integer weekDay) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        while (cal.get(Calendar.DAY_OF_WEEK) != weekDay) {
            cal.add(Calendar.DAY_OF_MONTH, 1);
        }
        return cal.getTime();
    }

    public static Date getDateWithWeekDay(Integer weekDay) {
        Calendar cal = Calendar.getInstance();
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
        if (weekDay == 1 && dayWeek != 1) {
            cal.add(Calendar.DAY_OF_WEEK, 8 - dayWeek);
        } else if (dayWeek == 1 && weekDay != 1) {
            cal.add(Calendar.DAY_OF_WEEK, weekDay - 8);
        } else if (weekDay != 1) {
            cal.add(Calendar.DAY_OF_WEEK, weekDay - dayWeek);
        }

        return DateUtil.dateStrToDate(DateUtil.dateFormat(cal.getTime(), "yyyy-MM-dd"), "yyyy-MM-dd");
    }


    /**
     * 根据日期获取当天是周几
     *
     * @param datetime 日期
     * @return 周几
     */
    public static String dateToWeek(String datetime) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String[] weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
        Calendar cal = Calendar.getInstance();
        Date date;
        try {
            date = sdf.parse(datetime);
            cal.setTime(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
        return weekDays[w];
    }

}

 

 

(全)JAVA时间计算工具类/得到两个日期间的天数/获取不带时分秒的日期/得到Util类型的Date/获得两个日期间的月数/根据日期获取当天是周几

原文:https://www.cnblogs.com/sonder/p/13470262.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!