【utils】DateUtil

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {
    /**
     * yyyy-MM-dd HH:mm:ss
     */
    public static final DateFormat FULL = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    /**
     * yyyy-MM-dd HH:mm:ss.SSS
     */
    public static final DateFormat FULL_FT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    /**
     * yyyyMMddHHmmssSSS
     */
    public static final DateFormat FULL_NUM_FT = new SimpleDateFormat("yyyyMMddHHmmssSSS");
    /**
     * yyyy-MM-dd
     */
    public static final DateFormat YYYY_MM_DD = new SimpleDateFormat("yyyy-MM-dd");

    /**
     * yyyyMMdd
     */
    public static final DateFormat YYYYMMDD = new SimpleDateFormat("yyyyMMdd");
    /**
    /**
     * yyyy-MM
     */
    public static final DateFormat YYYY_MM = new SimpleDateFormat("yyyy-MM");

    /**
     * 格式化日期 默认使用DateUtil.YYYY_MM_DD格式化
     * 
     * @param date
     * @param fomat
     * @return
     */
    public static final String format(Date date, DateFormat fomat) {
        if (fomat == null)
            return format(date);
        return fomat.format(date);
    }

    /**
     * 格式化日期
     * 
     * @param date
     * @return
     */
    public static final String format(Date date) {
        return DateUtil.YYYY_MM_DD.format(date);
    }

    public static final Date parse(String dateStr, DateFormat fomat) {
        try {

            if (fomat == null)
                return parse(dateStr);
            return fomat.parse(dateStr);
        } catch (ParseException e) {
            // e.printStackTrace();
            return null;
        }
    }

    /**
     * 日期字符串转换为日期类型
     * 
     * @param dateStr
     * @return
     */
    public static final Date parse(String dateStr) {
        try {
            return DateUtil.YYYY_MM_DD.parse(dateStr);
        } catch (ParseException e) {
            // e.printStackTrace();
            return null;
        }
    }

    /**
     * 获取多少小时后的时间
     * 
     * @param hours
     * @return
     */
    public static Date getDateLaterHours(int hours) {
        return getDateLaterHours(new Date(), hours);
    }

    /**
     * 获取多少分钟后的时间
     * @param date
     * @param minutes
     * @return
     */
    public static Date getDateLaterMinutes(Date date, int minutes){
        return  getDateLater(date, Calendar.MINUTE, minutes);
    }

    /**
     * 获取多少小时后的时间
     * 
     * @param date
     * @param hours
     * @return
     */
    public static Date getDateLaterHours(Date date, int hours) {
        return getDateLater(date, Calendar.HOUR_OF_DAY, hours);
    }

    /**
     * 获取多少天后的时间
     *
     * @param day
     * @return
     */
    public static Date getDateLaterDays(int days) {
        return getDateLaterDays(new Date(), days);
    }

    /**
     * 获取多少天后的时间
     *
     * @param date
     * @param day
     * @return
     */
    public static Date getDateLaterDays(Date date, int days) {
        return getDateLater(date, Calendar.DAY_OF_YEAR, days);
    }

    /**
     * 获取多少月后的时间
     *
     * @param date
     * @param months
     * @return
     */
    public static Date getDateLaterMonths(int months) {
        return getDateLaterMonths(new Date(), months);
    }

    /**
     * 获取多少月后的时间
     *
     * @param date
     * @param months
     * @return
     */
    public static Date getDateLaterMonths(Date date, int months) {
        return getDateLater(date, Calendar.MONTH, months);
    }

    /**
     * 获取多少年后的时间
     *
     * @param year
     * @return
     */
    public static Date getDateLaterYears(int years) {
        return getDateLaterYears(new Date(), years);
    }

    /**
     * 获取多少年后的时间
     *
     * @param date
     * @param year
     * @return
     */
    public static Date getDateLaterYears(Date date, int years) {
        return getDateLater(date, Calendar.YEAR, years);
    }

    /**
     * 获取多少(年、月、日)后的时间
     *
     * @param date
     * @param field
     * @param value
     * @return
     */
    public static Date getDateLater(int field, int value) {
        return getDateLater(new Date(), field, value);
    }

    /**
     * 获取多少(年、月、日)后的时间
     *
     * @param date
     * @param field
     *            Calendar的field
     * @param value
     * @return
     */
    public static Date getDateLater(Date date, int field, int value) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(field, value);
        return calendar.getTime();
    }

    /**
     * 返回某天的0时0分0秒
     * @param now
     * @return
     */
    public static Timestamp getTimestamp000000(Timestamp now){
        String todayDate = format(now);
        Timestamp todayTime = null;
        try {
            todayTime = new Timestamp(FULL.parse(todayDate+" 00:00:00").getTime());
        } catch (ParseException e1) {
            e1.printStackTrace();
        }
        return todayTime;
    }

    /**
     * 返回某天的23时59分59秒
     * @param now
     * @return
     */
    public static Timestamp getTimestamp235959(Timestamp now){
        String todayDate = format(now);
        Timestamp todayTime = null;
        try {
            todayTime = new Timestamp(FULL.parse(todayDate+" 23:59:59").getTime());
        } catch (ParseException e1) {
            e1.printStackTrace();
        }
        return todayTime;
    }

    /**
     * 判断是否为周一
     * @param date
     * @return
     */
    public static boolean isMonDayOfWeek(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        if(Calendar.MONDAY == calendar.get(Calendar.DAY_OF_WEEK)){
            return true;
        }
        return false;
    }

    /**
     * 判断是否为本月的第一天
     * @param date
     * @return
     */
    public static boolean isFirstDayOfMonth(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        if(1 == calendar.get(Calendar.DAY_OF_MONTH)){
            return true;
        }
        return false;
    }

    /**
     * 获取周一的日期
     * @param date
     * @return
     */
    public static  Date getMondayOfWeek(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        return calendar.getTime();
    }

    /**
     * 获取本月第一天的日期
     * @param date
     * @return
     */
    public static  Date getFirstDayOfMonth(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        return calendar.getTime();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值