Java date常用方法总结

来源:互联网 发布:淘宝wifi营销系统 编辑:程序博客网 时间:2024/05/21 00:16
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


/**
 * 日期工具类:用于查询,统计,日历展现等应用中的时间处理
 * @author lancelot
 *
 */
public class DateUtil {


private static Calendar setMinTime(Calendar calendar) {
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar;
    }


    private static Calendar setMaxTime(Calendar calendar) {
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        return calendar;
    }


    /**
     * 把时间设为最小,"00:00:00"
     * @param date - date
     * @return a new instance of date
     */
    public static Date setMinTime(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return DateUtil.setMinTime(calendar).getTime();
    }


    /**
     * 把时间设为最大,"23:59:59"
     * @param date - date
     * @return a new instance of date
     */
    public static Date setMaxTime(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return DateUtil.setMaxTime(calendar).getTime();
    }


//得到中午时间yyyy/MM/dd 12:00:00
public static Date setMidTime(Date date){
String date_str = new SimpleDateFormat("yyyy/MM/dd").format(date)+ " 12:00:00";
return StringTool.getStringDate(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"),date_str);

}

    /**
     * 得到日期所在月的首日
     * @param date 日期
     * @return 月的首日
     */
    public static Date getThisMonthFirstDate(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DATE, 1);
        return DateUtil.setMinTime(calendar).getTime();
    }


    /**
     * 得到日期所在月的末日
     * @param date 日期
     * @return 月的末日
     */
    public static Date getThisMonthLastDate(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        return DateUtil.setMaxTime(calendar).getTime();
    }


    /**
     * 得到上一个月的首日
     * @param date
     * @return
     */
    public static Date getPreMonthFirstDate(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, -1);
        return DateUtil.getThisMonthFirstDate(calendar.getTime());
    }


    /**
     * 获得下个月的首日
     * @param date
     * @return
     */
    public static Date getNextMonthFirstDate(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MONTH, 1);
        return DateUtil.getThisMonthFirstDate(calendar.getTime());
    }


    /**
     * 得到日期所在周的首日
     * @param date 日期
     * @return 一周的首日
     */
    public static Date getThisWeekFirstDate(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK, calendar.getActualMinimum(Calendar.DAY_OF_WEEK));
        return DateUtil.setMinTime(calendar).getTime();
    }


    /**
     * 得到日期所在周的首日
     * @param date
     * @param firstDayIsSunday
     * @return
     */
    public static Date getThisWeekFirstDate(Date date, boolean firstDayIsSunday) {
        if(firstDayIsSunday) {
            return getThisWeekFirstDate(date);
        } else {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
                calendar.add(Calendar.DATE, -6);
            } else {
                calendar.set(Calendar.DAY_OF_WEEK, calendar.getActualMinimum(Calendar.DAY_OF_WEEK));
calendar.add(Calendar.DATE, 1);
            }
            return DateUtil.setMinTime(calendar).getTime();
        }
    }


    /**
     * 得到日期所在周的末日
     * @param date 日期
     * @return 一周的末日
     */
    public static Date getThisWeekLastDate(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK, calendar.getActualMaximum(Calendar.DAY_OF_WEEK));
        return DateUtil.setMaxTime(calendar).getTime();
    }


    /**
     * 获得本周的最后一天
     * @param date
     * @param firstDayIsSunday
     * @return
     */
    public static Date getThisWeekLastDate(Date date, boolean firstDayIsSunday) {
        if(firstDayIsSunday) {
            return getThisWeekLastDate(date);
        } else {
            Date temp = getThisWeekFirstDate(date, firstDayIsSunday);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(temp);
            calendar.add(Calendar.DATE, 6);
            return DateUtil.setMaxTime(calendar).getTime();
        }
    }


    /**
     * 获得上一周的第一天
     * @param date
     * @return
     */
    public static Date getPreWeekFirstDate(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.WEEK_OF_YEAR, -1);
        return DateUtil.getThisWeekFirstDate(calendar.getTime());
    }


    /**
     * 获得上一周的第一天
     * @param date
     * @param firstDayIsSunday
     * @return
     */
    public static Date getPreWeekFirstDate(Date date, boolean firstDayIsSunday) {
        if(firstDayIsSunday) {
            return getPreWeekFirstDate(date);
        } else {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.WEEK_OF_YEAR, -1);
            return DateUtil.getThisWeekFirstDate(calendar.getTime(), firstDayIsSunday);
        }
    }


    /**
     * 获得下一周的第一天
     * @param date
     * @return
     */
    public static Date getNextWeekFirstDate(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.WEEK_OF_YEAR, 1);
        return DateUtil.getThisWeekFirstDate(calendar.getTime());
    }


    /**
     * 获得下一周的第一天
     * @param date
     * @param firstDayIsSunday
     * @return
     */
    public static Date getNextWeekFirstDate(Date date, boolean firstDayIsSunday) {
        if(firstDayIsSunday) {
            return getNextWeekFirstDate(date);
        } else {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.add(Calendar.WEEK_OF_YEAR, 1);
            return DateUtil.getThisWeekFirstDate(calendar.getTime(), firstDayIsSunday);
        }
    }


    /**
     * 得到一个月有几个星期,星期日为一星期的首日,只要一个星期中有一天在这个月就算一个星期
     * @param date 日期
     * @return 一个月中的星期数
     */
    public static int getWeekCountPerMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);


        calendar.setFirstDayOfWeek(Calendar.SUNDAY);
        calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        return calendar.get(Calendar.WEEK_OF_MONTH);
    }


    /**
     * 得到一月的第一天是周几,周日为1,周一为2,以此类推
     * @param date 日期
     * @return
     */
    public static int getMonthFirstDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        return calendar.get(Calendar.DAY_OF_WEEK);
    }


    /**
     * 得到一个月有几天
     * @param date 日期
     * @return
     */
    public static int getDayCountPerMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);


        calendar.setFirstDayOfWeek(Calendar.SUNDAY);
        calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        return calendar.get(Calendar.DAY_OF_MONTH);
    }


    /**
     * 获得去年该月的首日
     * @param date
     * @return
     */
    public static Date getPreYearMonthFirstDate( Date date ){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add( Calendar.YEAR , -1) ;
        return DateUtil.getThisMonthFirstDate( calendar.getTime() ) ;
    }


    /**
     * 获得去年该月的未日
     * @param date
     * @return
     */
    public static Date getPreYearMonthLastDate( Date date ){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add( Calendar.YEAR , -1) ;
        return DateUtil.getThisMonthLastDate( calendar.getTime() ) ;
    }


    /**
     * 获得去年该日
     * @param date
     * @return
     */
    public static Date getPreYearDate( Date date ){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add( Calendar.YEAR , -1) ;
        return calendar.getTime();
    }
    
    /**
     * 获得该年的第一天
     * @param date
     * @return
     */
    public static Date getFirstDayOfYear( Date date ){
Calendar calendar = Calendar.getInstance() ;
calendar.setTime( date ) ;
calendar.set( Calendar.DAY_OF_YEAR , 1 ) ;
return DateUtil.setMinTime( calendar.getTime() ) ;
    }


    /**
     * 获得去年的首日
     * @param date
     * @return
     */
    public static Date getPreYearFirstDayOfYear( Date date ){
Calendar calendar = Calendar.getInstance() ;
calendar.setTime( date ) ;
calendar.add( Calendar.YEAR , -1) ;
return DateUtil.getFirstDayOfYear( calendar.getTime() ) ;
    }
}
0 0
原创粉丝点击