JAVA时间Date工具类

 

可以直接使用hutool的date工具类

cn.hutool.core.date.DateUtil   

beginOfDay  : 获取某天的开始时间
endOfDay  :获取某天的结束时间

 

 DateUtils.java

 

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
 
public class DateUtils {
    private StringBuffer buffer = new StringBuffer();
    private static String ZERO = "0";
    private static DateUtils date;
    public static SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
    public static SimpleDateFormat format1 = new SimpleDateFormat(
            "yyyyMMdd HH:mm:ss");
    public static SimpleDateFormat common_format = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss");
 
    public String getNowString() {
        Calendar calendar = getCalendar();
        buffer.delete(0, buffer.capacity());
        buffer.append(getYear(calendar));
 
        if (getMonth(calendar) < 10) {
            buffer.append(ZERO);
        }
        buffer.append(getMonth(calendar));
 
        if (getDate(calendar) < 10) {
            buffer.append(ZERO);
        }
        buffer.append(getDate(calendar));
        if (getHour(calendar) < 10) {
            buffer.append(ZERO);
        }
        buffer.append(getHour(calendar));
        if (getMinute(calendar) < 10) {
            buffer.append(ZERO);
        }
        buffer.append(getMinute(calendar));
        if (getSecond(calendar) < 10) {
            buffer.append(ZERO);
        }
        buffer.append(getSecond(calendar));
        return buffer.toString();
    }
 
    private static int getDateField(Date date, int field) {
        Calendar c = getCalendar();
        c.setTime(date);
        return c.get(field);
    }
 
    public static int getYearsBetweenDate(Date begin, Date end) {
        int bYear = getDateField(begin, Calendar.YEAR);
        int eYear = getDateField(end, Calendar.YEAR);
        return eYear - bYear;
    }
 
    public static int getMonthsBetweenDate(Date begin, Date end) {
        int bMonth = getDateField(begin, Calendar.MONTH);
        int eMonth = getDateField(end, Calendar.MONTH);
        return eMonth - bMonth;
    }
 
    public static int getWeeksBetweenDate(Date begin, Date end) {
        int bWeek = getDateField(begin, Calendar.WEEK_OF_YEAR);
        int eWeek = getDateField(end, Calendar.WEEK_OF_YEAR);
        return eWeek - bWeek;
    }
 
    public static int getDaysBetweenDate(Date begin, Date end) {
        return (int) ((end.getTime()-begin.getTime())/(1000 * 60 * 60 * 24));
    }
 
    public static void main(String args[]) {
        System.out.println(getSpecficMonthStart(Calendar.getInstance().getTime(), 0));
    }
 
    /**
     * 获取date年后的amount年的第一天的开始时间
     *
     * @param amount
     *            可正、可负
     * @return
     */
    public static Date getSpecficYearStart(Date date, int amount) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.YEAR, amount);
        cal.set(Calendar.DAY_OF_YEAR, 1);
        return getStartDate(cal.getTime());
    }
 
    /**
     * 获取date年后的amount年的最后一天的终止时间
     *
     * @param amount
     *            可正、可负
     * @return
     */
    public static Date getSpecficYearEnd(Date date, int amount) {
        Date temp = getStartDate(getSpecficYearStart(date, amount + 1));
        Calendar cal = Calendar.getInstance();
        cal.setTime(temp);
        cal.add(Calendar.DAY_OF_YEAR, -1);
        return getFinallyDate(cal.getTime());
    }
 
    /**
     * 获取date月后的amount月的第一天的开始时间
     *
     * @param amount
     *            可正、可负
     * @return
     */
    public static Date getSpecficMonthStart(Date date, int amount) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.MONTH, amount);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        return getStartDate(cal.getTime());
    }
 
    /**
     * 获取当前自然月后的amount月的最后一天的终止时间
     *
     * @param amount
     *            可正、可负
     * @return
     */
    public static Date getSpecficMonthEnd(Date date, int amount) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(getSpecficMonthStart(date, amount + 1));
        cal.add(Calendar.DAY_OF_YEAR, -1);
        return getFinallyDate(cal.getTime());
    }
 
    /**
     * 获取date周后的第amount周的开始时间(这里星期一为一周的开始)
     *
     * @param amount
     *            可正、可负
     * @return
     */
    public static Date getSpecficWeekStart(Date date, int amount) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.setFirstDayOfWeek(Calendar.MONDAY); /* 设置一周的第一天为星期一 */
        cal.add(Calendar.WEEK_OF_MONTH, amount);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        return getStartDate(cal.getTime());
    }
 
    /**
     * 获取date周后的第amount周的最后时间(这里星期日为一周的最后一天)
     *
     * @param amount
     *            可正、可负
     * @return
     */
    public static Date getSpecficWeekEnd(Date date, int amount) {
        Calendar cal = Calendar.getInstance();
        cal.setFirstDayOfWeek(Calendar.MONDAY); /* 设置一周的第一天为星期一 */
        cal.add(Calendar.WEEK_OF_MONTH, amount);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        return getFinallyDate(cal.getTime());
    }
 
    public static Date getSpecficDateStart(Date date, int amount) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DAY_OF_YEAR, amount);
        return getStartDate(cal.getTime());
    }
     
    public static Date getSpecficDateEnd(Date date, int amount) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.DAY_OF_YEAR, amount);
        return getFinallyDate(cal.getTime());
    }
 
    /**
     * 得到指定日期的一天的的最后时刻23:59:59
     *
     * @param date
     * @return
     */
    public static Date getFinallyDate(Date date) {
        String temp = format.format(date);
        temp += " 23:59:59";
 
        try {
            return format1.parse(temp);
        } catch (ParseException e) {
            return null;
        }
    }
 
    /**
     * 得到指定日期的一天的的最后时刻23:59:59
     *
     * @param date
     * @return
     */
    public static String getFinallyDateStr(Date date) {
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String temp = format.format(date);
        temp += " 23:59:59";
 
        try {
            return temp;
        } catch (Exception e) {
            return temp;
        }
    }
 
    /**
     * 得到指定日期的一天的开始时刻00:00:00
     *
     * @param date
     * @return
     */
    public static Date getStartDate(Date date) {
        String temp = format.format(date);
        temp += " 00:00:00";
 
        try {
            return format1.parse(temp);
        } catch (Exception e) {
            return null;
        }
    }
 
 
    /**
     * 得到指定日期的一天的开始时刻00:00:00
     *
     * @param date
     * @return
     */
    public static String getStartDateStr(Date date) {
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        String temp = format.format(date);
        temp += " 00:00:00";
 
        try {
            return temp;
        } catch (Exception e) {
            return temp;
        }
    }
 
 
 
 
    /**
     *
     * @param date
     *            指定比较日期
     * @param compareDate
     * @return
     */
    public static boolean isInDate(Date date, Date compareDate) {
        if (compareDate.after(getStartDate(date))
                && compareDate.before(getFinallyDate(date))) {
            return true;
        } else {
            return false;
        }
 
    }
     
    /**
     * 获取两个时间的差值秒
     * @param d1
     * @param d2
     * @return
     */
    public static Integer getSecondBetweenDate(Date d1,Date d2){
        Long second=(d2.getTime()-d1.getTime())/1000;
        return second.intValue();
    }
 
    private int getYear(Calendar calendar) {
        return calendar.get(Calendar.YEAR);
    }
 
    private int getMonth(Calendar calendar) {
        return calendar.get(Calendar.MONDAY) + 1;
    }
 
    private int getDate(Calendar calendar) {
        return calendar.get(Calendar.DATE);
    }
 
    private int getHour(Calendar calendar) {
        return calendar.get(Calendar.HOUR_OF_DAY);
    }
 
    private int getMinute(Calendar calendar) {
        return calendar.get(Calendar.MINUTE);
    }
 
    private int getSecond(Calendar calendar) {
        return calendar.get(Calendar.SECOND);
    }
 
    private static Calendar getCalendar() {
        return Calendar.getInstance();
    }
 
    public static DateUtils getDateInstance() {
        if (date == null) {
            date = new DateUtils();
        }
        return date;
    }
}

 

posted @ 2019-03-25 14:12  yvioo  阅读(273)  评论(0编辑  收藏  举报