欺负凹凸曼的小怪兽的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();
    }
    
}

打赏

最代码最近下载分享源代码列表最近下载
最代码最近浏览分享源代码列表最近浏览
managment  LV3 4月17日
暂无贡献等级
1112WHQ  LV7 2023年11月3日
surpriseY  LV1 2023年10月14日
MIAOHUA  LV6 2022年1月13日
charles1256  LV11 2021年12月15日
疯子庭  LV8 2021年11月30日
Mywang  LV4 2021年11月19日
小白小怪  LV10 2021年6月8日
Zeorwyc  LV8 2021年3月20日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友