Java日期操作--工具类

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

/**
 * 日期操作工具类
 * @author chen
 */
public class DatetimeUtil {

    /**
     * 日期格式化
     * @param strVal
     * @param format
     * @return
     */
    public static Date getDateTime(String strVal, String format) {
        try {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
            Date date = simpleDateFormat.parse(strVal);
            return date;
        } catch (ParseException e) {
            return null;
        }
    }

    /**
     * 将字符串转化为日期类型 yyyy-MM-dd
     * @param strVal
     * @return
     */
    public static Date getDate(String strVal) {
        return getDateTime(strVal, "yyyy-MM-dd");
    }

    /**
     * 将字符串转化为日期类型 yyyy-MM-dd HH:mm:ss
     * @param strVal
     * @return
     */
    public static Date getDateTime(String strVal) {
        return getDateTime(strVal, "yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 将字符串按指定类型进行转换
     * @param date
     * @param format
     * @return
     */
    public static String getDateTimeString(Date date, String format) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
        String str = simpleDateFormat.format(date);
        return str;
    }

    /**
     * 将日期转换成年份
     * @param date
     * @return
     */
    public static String getYearString(Date date) {
        return getDateTimeString(date, "yyyy");
    }

    /**
     * 将日期转换成yyyy-MM-dd形式的字符串
     * @param date
     * @return
     */
    public static String getDateString(Date date) {
        return getDateTimeString(date, "yyyy-MM-dd");
    }

    /**
     * 将日期转换成yyyy-MM-dd HH:mm:ss形式的字符串
     * @param date
     * @return
     */
    public static String getDateTimeString(Date date) {
        return getDateTimeString(date, "yyyy-MM-dd HH:mm:ss");
    }

    /**
     * 给日期添加开始时间
     * @param date
     * @return
     */
    public static Date getDateBegin(Date date) {
        String strVal = getDateString(date) + " 00:00:00";
        return getDateTime(strVal);
    }

    /**
     * 给日期添加结束时间
     * @param date
     * @return
     */
    public static Date getDateEnd(Date date) {
        String strVal = getDateString(date) + " 23:59:59";
        return getDateTime(strVal);
    }

    /**
     * 获取某年开始时刻
     * @param year
     * @return Date
     */
    public static Date getYearBegin(int year) {
        String strVal = year + "-01-01 00:00:00";
        return getDateTime(strVal);
    }

    /**
     * 获取某年结束时刻
     * @param year
     * @return Date
     */
    public static Date getYearEnd(int year) {
        String strVal = year + "-12-31 23:59:59";
        return getDateTime(strVal);
    }

    /**
     * 获取今年开始时刻
     * @return Date
     */
    public static Date getYearBegin() {
        Integer year = Calendar.getInstance().get(Calendar.YEAR);
        String strVal = year + "-01-01 00:00:00";
        return getDateTime(strVal);
    }

    /**
     * 获取今年结束时刻
     * @return Date
     */
    public static Date getYearEnd() {
        Integer year = Calendar.getInstance().get(Calendar.YEAR);
        String strVal = year + "-12-31 23:59:59";
        return getDateTime(strVal);
    }

    /**
     * 将日期重新格式化
     * @param strVal
     * @param fromFormat
     * @param toFormat
     * @return
     */
    public static String convertDateTimeString(String strVal, String fromFormat, String toFormat) {
        Date date = DatetimeUtil.getDateTime(strVal, fromFormat);
        return DatetimeUtil.getDateTimeString(date, toFormat);
    }

    /**
     * 当前时间加n年
     * @param n
     * @return
     */
    public static Date addYearFromNow(Integer n) {
        Calendar calendar=Calendar.getInstance(Locale.CHINA);
        calendar.setTime(new Date());
        calendar.add(Calendar.YEAR, n);
        Date date = calendar.getTime();
        return date;
    }

    /**
     * 传入Calendar获得日期
     * @param calendar
     * @return
     */
    public static String getYearMonthDay(Calendar calendar) {
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        return year + "-" + month + "-" + day;
    }

    /**
     * 获取这周的某天
     * @param calendar
     * @param day_of_week
     * @return
     */
    public static String getWeekDate(Calendar calendar, int day_of_week) {
        //最小星期一
        while(calendar.get(Calendar.DAY_OF_WEEK) != 2 && calendar.get(Calendar.DAY_OF_WEEK) != day_of_week) {
            calendar.add(Calendar.DAY_OF_MONTH, -1);
        }
        if(calendar.get(Calendar.DAY_OF_WEEK) == day_of_week)
            return DatetimeUtil.getDateString(calendar.getTime());
        //最大星期日
        while(calendar.get(Calendar.DAY_OF_WEEK) != 1 && calendar.get(Calendar.DAY_OF_WEEK) != day_of_week) {
            calendar.add(Calendar.DAY_OF_MONTH, 1);
        }
        return DatetimeUtil.getDateString(calendar.getTime());
    }

}

发布了125 篇原创文章 · 获赞 67 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_42109746/article/details/103972584