欺负凹凸曼的小怪兽的gravatar头像
欺负凹凸曼的小怪兽2017-05-18 17:38:00

JAVA新手写的日期工具类

没有多少开发经验,所以写的东西问题多多,请各位牛牛能多多指点,感激不尽!

 

package com.demo.ssm.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * 
 * @description:日期工具类
 * @version:v1.0.0 
 * @date:2017年5月18日 下午5:22:20
 * @author:ZhengYelong
 */
public class DateUtil {
    
    /**
     * 默认日期格式(yyyy-MM-dd)
     */
    public static final String DATE_DEFAULT = "yyyy-MM-dd";
    
    /**
     * 默认日期格式(yyyy-MM)
     */
    public static final String DATE_DEFAULT_SHORT = "yyyy-MM";
    
    /**
     * 默认日期时间格式(yyyy-MM-dd HH:mm)
     */
    public static final String DATETIME_DEFAULT_SHORT = "yyyy-MM-dd HH:mm";
    
    /**
     * 默认日期时间格式(yyyy-MM-dd HH:mm:ss)
     */
    public static final String DATETIME_DEFAULT = "yyyy-MM-dd HH:mm:ss";
    
    /**
     * 默认时间格式(HH:mm)
     */
    public static final String TIME_DEFAULT_SHORT = "HH:mm";
    
    /**
     * 默认时间格式(HH:mm:ss)
     */
    public static final String TIME_DEFAULT = "HH:mm:ss";
    
    private static Calendar calendar = Calendar.getInstance();
    
    /**
     * 
     * @Description: 获取当前日期
     * @return
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午3:21:43
     */
    public static Date getCurrentDate() {
        return new Date();
    }
    
    /**
     * 
     * @Description: 返回当前日期的字符串格式(yyyy-MM-dd)
     * @return
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午3:17:38
     */
    public static String getCurrentDateStr() {
        return getCurrentDateStr(DATE_DEFAULT);
    }
    
    /**
     * 
     * @Description: 返回指定格式的当前日期
     * @param patternStr 格式化日期的格式
     * @return
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午3:18:35
     */
    public static String getCurrentDateStr(String patternStr) {
        return formatToString(getCurrentDate(), patternStr);
    }
    
    /**
     * 
     * @Description:将字符串日期转换成默认日期(yyyy-MM-dd)
     * @param dateStr 字符串日期
     * @return 格式化后的日期
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午3:00:33
     */
    public static Date parseToDate(String dateStr) {
        return parseToDate(dateStr, DATE_DEFAULT);
    }
    
    /**
     * 
     * @Description: 将字符串转化为指定格式的日期
     * @param dateStr 日期字符串
     * @param patternStr 日期格式化格式
     * @return 格式化后的日期
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午2:44:32
     */
    public static Date parseToDate(String dateStr, String patternStr) {
        Date date = null;
        try {
            date = new SimpleDateFormat(patternStr).parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
    
    /**
     * 
     * @Description: 将日期格式化成默认字符串日期(yyyy-MM-dd)
     * @param date 日期
     * @return 日期字符串
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午3:05:51
     */
    public static String formatToString(Date date) {
        return formatToString(date, DATE_DEFAULT);
    }
    
    /**
     * 
     * @Description: 将日期格式化成指定格式的字符串日期
     * @param date 日期
     * @param patternStr 格式化日期的格式
     * @return 日期字符串
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午3:06:44
     */
    public static String formatToString(Date date, String patternStr) {
        if (null == date) {
            return "";
        }
        if (null == patternStr || "".equals(patternStr)) {
            patternStr = DATE_DEFAULT;
        }
        return new SimpleDateFormat(patternStr).format(date);
    }
    
    /**
     * 
     * @Description: 获取日期所在月份的第一天
     * @param date 日期
     * @return
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午3:30:45
     */
    public static Date getFirstDayOfMonth(Date date) {
        if (null == date) {
            return null;
        }
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        return calendar.getTime();
    }
    
    /**
     * 
     * @Description: 获取日期所在月份的最后一天
     * @param date 日期
     * @return
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午3:38:42
     */
    public static Date getLastDayOfMonth(Date date) {
        if (null == date) {
            return null;
        }
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        calendar.add(Calendar.MONTH, 1);
        calendar.add(Calendar.DAY_OF_MONTH, -1);
        return calendar.getTime();
    }
    
    /**
     * 
     * @Description: 获取日期所在周的周一的日期
     * @param date 日期
     * @return
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午3:46:58
     */
    public static Date getFirstDayOfWeek(Date date) {
        if (null == date) {
            return null;
        }
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());
        return calendar.getTime();
    }
    
    /**
     * 
     * @Description: 获取日期所在周的周日的日期
     * @param date 日期
     * @return
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午3:47:47
     */
    public static Date getLastDayOfWeek(Date date) {
        if (null == date) {
            return null;
        }
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek() + 6);
        return calendar.getTime();
    }
    
    /**
     * 
     * @Description: 获取两个日期之间的所有日期
     * @param startDate 开始日期(yyyy-MM-dd)
     * @param endDate 结束日期(yyyy-MM-dd)
     * @return 日期集合
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午4:18:35
     */
    public static List<Date> getBetweenDate(Date startDate, Date endDate) {
        List<Date> everyDays = new ArrayList<Date>();
        if (null == startDate || null == endDate || endDate.before(startDate)) {
            return everyDays;
        }
        startDate = DateUtil.parseToDate(DateUtil.formatToString(startDate));
        endDate = DateUtil.parseToDate(DateUtil.formatToString(endDate));
        everyDays.add(startDate);
        calendar.setTime(startDate);
        while (calendar.getTime().compareTo(endDate) < 0) {
            calendar.add(Calendar.DAY_OF_MONTH, 1);
            everyDays.add(calendar.getTime());
        }
        return everyDays;
    }
    
    /**
     * 
     * @Description: 获取当前日期n天之前的日期
     * @param day 天数
     * @return
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午4:29:11
     */
    public static Date getBeforeOfDay(int day) {
        return getBeforeOfDay(getCurrentDate(), day);
    }
    
    /**
     * 
     * @Description: 获取指定日期N天之前的日期
     * @param date 日期
     * @param day 天数
     * @return
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午5:06:17
     */
    public static Date getBeforeOfDay(Date date, int day) {
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - day);
        return calendar.getTime();
    }
    
    /**
     * 
     * @Description: 获取当前日期n天之后的日期
     * @param day 天数
     * @return
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午4:59:39
     */
    public static Date getAfterOfDay(int day) {
        return getAfterOfDay(getCurrentDate(), day);
    }
    
    /**
     * 
     * @Description: 获取指定日期N天之后的日期
     * @param date 日期
     * @param day 天数
     * @return
     * @version:v1.0
     * @author:ZhengYelong
     * @date:2017年5月18日 下午5:07:01
     */
    public static Date getAfterOfDay(Date date, int day) {
        calendar.setTime(date);
        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + day);
        return calendar.getTime();
    }
    
}

打赏

顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友