java获取任意指定日期后前后任一一天

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

/*
*@author leixingbang_sx
*Mail:[email protected]
*@create 2015/12/23 9:59
*desc  日期工具
*/
public class DateUtils {

    /**
     * 短格式日期格式化
     */
    private static final SimpleDateFormat SHORT_YEAR_FORMATOR = new SimpleDateFormat("yy-MM-dd");

    /**
     * 标准日期格式化
     */
    private static final SimpleDateFormat CUSTOM_DAY_FORMATOR = new SimpleDateFormat("yyyy-MM-dd");

    /**
     * 标准日期时间格式化
     */
    private static final SimpleDateFormat CUSTOM_DAYTIME_FORMATOR = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 获得指定日期的前一天
     *
     * @param specifiedDay 指定日期
     * @return 前一天
     */
    public static Date getSpecifiedDayBefore(String specifiedDay) {
       return getDate(specifiedDay, -1);
    }

    /**
     * 获得指定日期的后一天
     *
     * @param specifiedDay 指定日期
     * @return 后一天
     */
    public static Date getSpecifiedDayAfter(String specifiedDay) {
        return getDate(specifiedDay, 1);
    }

    private static Date getDate(String specifiedDay, int diffDays) {
        Calendar c = Calendar.getInstance();
        try {
            c.setTime(SHORT_YEAR_FORMATOR.parse(specifiedDay));
            c.set(Calendar.DATE, c.get(Calendar.DATE) + diffDays);
            return CUSTOM_DAY_FORMATOR.parse(CUSTOM_DAY_FORMATOR.format(c.getTime()));
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 将string类型的日期转化为date类型 例如输出"2014-12-23" 则转化为对应Date为"2014-12-23 00:00:00"
     * @param specifiedDay 指定String类型的日期
     * @return 日期
     */
    public static Date parseDayStrToDate(String specifiedDay)
    {
        try {
            return CUSTOM_DAY_FORMATOR.parse(specifiedDay);
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 将指定的日期转化为String类型
     * @param date 日期
     * @return 格式化后字符串
     */
    public static String parseDateToStr(Date date) {
        return CUSTOM_DAYTIME_FORMATOR.format(date);
    }

    public static void main(String[] args) {

    }
}

你可能感兴趣的:(java获取任意指定日期后前后任一一天)