日期工具类

package src.main.java.com.rabbit.jdk7;

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

/**
 * 基于JDK7的Date工具类
 * Created by rabbit on 2017/12/1.
 */
public final class DateUtil {

    /**
     * yyyy-MM-dd HH:mm:ss SSS
     */
    public static final String MILL_FORMAT = "yyyy-MM-dd HH:mm:ss SSS";

    /**
     * yyyyMMddHHmmssSSS
     */
    public static final String CLING_MILL_FORMAT = "yyyyMMddHHmmssSSS";

    /**
     * yyyy-MM-dd HH:mm:ss格式
     */
    public static final String DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";

    /**
     * yyyyMMddHHmmss
     */
    public static final String CLING_FORMAT = "yyyyMMddHHmmss";

    /**
     * yyyy-MM-dd
     */
    public static final String YMD_FORMAT = "yyyy-MM-dd";

    /**
     * yyyyMMdd
     */
    public static final String CLING_YMD_FORMAT = "yyyyMMdd";

    /**
     * HH:mm:ss
     */
    public static final String HMS_FORMAT = "HH:mm:ss";

    /**
     * HHmmss
     */
    public static final String CLING_HMS_FORMAT = "HHmmss";

    private DateUtil() {}//私有构造函数

    private static final SimpleDateFormat SDF = new SimpleDateFormat();

    /**
     * 获取当前时间的毫秒值
     * @return
     */
    public static long getNowTime() {
        return new Date().getTime();
    }

    /**
     * 返回当前时间的yyyy-MM-dd HH:mm:ss SSS格式
     * @return
     */
    public static String getMillFormat() {
        return getMillFormat(new Date());
    }

    /**
     * 根据给定时间格式化为yyyy-MM-dd HH:mm:ss SSS格式
     * @param date
     * @return
     */
    public static String getMillFormat(Date date) {
        return format(date, MILL_FORMAT);
    }

    /**
     * 解析yyyy-MM-dd HH:mm:ss SSS格式
     * @param date
     * @return
     * @throws ParseException
     */
    public static Date parseMillFormat(String date) throws ParseException {
        return parse(date, MILL_FORMAT);
    }

    /**
     * 返回当前时间的yyyyMMddHHmmssSSS格式
     * @return
     */
    public static String getClingMillFormat() {
        return getClingMillFormat(new Date());
    }

    /**
     * 根据给定时间格式化为yyyyMMddHHmmssSSS格式
     * @param date
     * @return
     */
    public static String getClingMillFormat(Date date) {
        return format(date, CLING_MILL_FORMAT);
    }

    /**
     * 解析yyyyMMddHHmmssSSS格式
     * @param date
     * @return
     * @throws ParseException
     */
    public static Date parseClingMillFormat(String date) throws ParseException {
        return parse(date, CLING_MILL_FORMAT);
    }

    /**
     * 返回当前时间的yyyy-MM-dd HH:mm:ss格式
     * @return
     */
    public static String getDefaultFormat() {
        return getDefaultFormat(new Date());
    }

    /**
     * 根据给定时间格式化为yyyy-MM-dd HH:mm:ss格式
     * @param date
     * @return
     */
    public static String getDefaultFormat(Date date) {
        return format(date, DEFAULT_FORMAT);
    }

    /**
     * 解析yyyy-MM-dd HH:mm:ss格式
     * @param date
     * @return
     * @throws ParseException
     */
    public static Date parseDefaultFormat(String date) throws ParseException {
        return parse(date, DEFAULT_FORMAT);
    }

    /**
     * 返回当前时间的yyyyMMddHHmmss格式
     * @return
     */
    public static String getClingFormat() {
        return getClingFormat(new Date());
    }

    /**
     * 根据给定时间格式化为yyyyMMddHHmmss格式
     * @param date
     * @return
     */
    public static String getClingFormat(Date date) {
        return format(date, CLING_FORMAT);
    }

    /**
     * 解析yyyyMMddHHmmss格式
     * @param date
     * @return
     * @throws ParseException
     */
    public static Date parseClingFormat(String date) throws ParseException {
        return parse(date, CLING_FORMAT);
    }

    /**
     * 返回当前时间的yyyy-MM-dd格式
     * @return
     */
    public static String getYMDFormat() {
        return getYMDFormat(new Date());
    }

    /**
     * 根据给定时间格式化为yyyy-MM-dd格式
     * @param date
     * @return
     */
    public static String getYMDFormat(Date date) {
        return format(date, YMD_FORMAT);
    }

    /**
     * 解析yyyy-MM-dd格式
     * @param date
     * @return
     * @throws ParseException
     */
    public static Date parseYMDFormat(String date) throws ParseException {
        return parse(date, YMD_FORMAT);
    }

    /**
     * 返回当前时间的yyyyMMdd格式
     * @return
     */
    public static String getClingYMDFormat() {
        return getClingYMDFormat(new Date());
    }

    /**
     * 根据给定时间格式化为yyyyMMdd格式
     * @param date
     * @return
     */
    public static String getClingYMDFormat(Date date) {
        return format(date, CLING_YMD_FORMAT);
    }

    /**
     * 解析yyyyMMdd格式
     * @param date
     * @return
     * @throws ParseException
     */
    public static Date parseClingYMDFormat(String date) throws ParseException {
        return parse(date, CLING_YMD_FORMAT);
    }

    /**
     * 返回当前时间的HH:mm:ss格式
     * @return
     */
    public static String getHMSFormat() {
        return getHMSFormat(new Date());
    }

    /**
     * 根据给定时间格式化为HH:mm:ss格式
     * @param date
     * @return
     */
    public static String getHMSFormat(Date date) {
        return format(date, HMS_FORMAT);
    }

    /**
     * 解析HH:mm:ss格式
     * @param date
     * @return
     * @throws ParseException
     */
    public static Date parseHMSFormat(String date) throws ParseException {
        return parse(date, HMS_FORMAT);
    }

    /**
     * 返回当前时间的HHmmss格式
     * @return
     */
    public static String getClingHMSFormat() {
        return getClingHMSFormat(new Date());
    }

    /**
     * 根据给定时间格式化为HHmmss格式
     * @param date
     * @return
     */
    public static String getClingHMSFormat(Date date) {
        return format(date, CLING_HMS_FORMAT);
    }

    /**
     * 解析HHmmss格式
     * @param date
     * @return
     * @throws ParseException
     */
    public static Date parseClingHMSFormat(String date) throws ParseException {
        return parse(date, CLING_HMS_FORMAT);
    }

    /**
     * 根据给定格式和日期格式化
     * @param date
     * @param format
     * @return
     */
    public static String format(Date date, String format) {
        SDF.applyPattern(format);
        return SDF.format(date);
    }

    /**
     * 解析字符串为时间
     * @param date 日期字符串
     * @param parse 日期格式
     * @return
     * @throws ParseException
     */
    public static Date parse(String date, String parse) throws ParseException {
        SDF.applyPattern(parse);
        return SDF.parse(date);
    }

    private static final Calendar CALENDAR = Calendar.getInstance();

    /**
     * 主要给用户需要执行其他操作的时候可以获取到这个对象继续
     * @return
     */
    public Calendar getCalendar() {
        return CALENDAR;
    }

    /**
     * 获取当前年份
     * @return
     */
    public static int getNowYear() {
        return get(Calendar.YEAR);
    }

    /**
     * 获取年份然后执行对应的操作,例如上一年输入-1,下一年输入1
     * @Param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getYearByNum(int num) {
        return get(Calendar.YEAR, num);
    }

    /**
     * 获取指定时间年份
     * @Param date
     * @return
     */
    public static int getYear(Date date) {
        return get(date, Calendar.YEAR);
    }

    /**
     * 获取指定时间年份
     * @param date
     * @param  num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getYearByNum(Date date, int num) {
        return get(date, Calendar.YEAR, num);
    }

    /**
     * 获取指定时间年份
     * @return
     */
    public static int getYear(long millis) {
        return get(millis, Calendar.YEAR);
    }

    /**
     * 获取指定时间年份
     * @param millis
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getYear(long millis, int num) {
        return get(millis, Calendar.YEAR, num);
    }

    /**
     * 获取当前月份
     * @return
     */
    public static int getNowMonth() {
        return get(Calendar.MONTH) + 1;
    }

    /**
     * 获取当前月份
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getMonthByNum(int num) {
        return get(Calendar.MONTH, num) + 1;
    }

    /**
     * 获取月份
     * @param date
     * @return
     */
    public static int getMonth(Date date) {
        return get(date, Calendar.MONTH) + 1;
    }

    /**
     * 获取月份
     * @param date
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getMonthByNum(Date date, int num) {
        return get(date, Calendar.MONTH, num) + 1;
    }

    /**
     * 获取月份
     * @param millis
     * @return
     */
    public static int getMonth(long millis) {
        return get(millis, Calendar.MONTH) + 1;
    }

    /**
     * 获取月份
     * @param millis
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getMonthByNum(long millis, int num) {
        return get(millis, Calendar.MONTH, num) + 1;
    }

    /**
     * 获取今天是这个月的多少号
     * @return
     */
    public static int getNowDayOfMonth() {
        return get(Calendar.DAY_OF_MONTH);
    }

    /**
     * 获取今天是这个月的多少号
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getDayOfMonthByNum(int num) {
        return get(Calendar.DAY_OF_MONTH, num);
    }

    /**
     * 获取今天是多少号
     * @param date
     * @return
     */
    public static int getDayOfMonth(Date date) {
        return get(date, Calendar.DAY_OF_MONTH);
    }

    /**
     * 获取今天是多少号
     * @param date
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getDayOfMonthByNum(Date date, int num) {
        return get(date, Calendar.DAY_OF_MONTH, num);
    }

    /**
     * 获取今天是多少号
     * @param millis
     * @return
     */
    public static int getDayOfMonth(long millis) {
        return get(millis, Calendar.DAY_OF_MONTH);
    }

    /**
     * 获取今天是多少号
     * @param millis
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getDayOfMonth(long millis, int num) {
        return get(millis, Calendar.DAY_OF_MONTH, num);
    }

    /**
     * 获取今天是今年的第几天
     * @return
     */
    public static int getNowDayOfYear() {
        return get(Calendar.DAY_OF_YEAR);
    }

    /**
     * 获取今天是今年的第几天
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getDayOfYearByNum(int num) {
        return get(Calendar.DAY_OF_YEAR, num);
    }

    /**
     * 获取今天是指定年的第几天
     * @param date
     * @return
     */
    public static int getDayOfYear(Date date) {
        return get(date, Calendar.DAY_OF_YEAR);
    }

    /**
     * 获取今天是指定年的第几天
     * @param date
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getDayOfYearByNum(Date date, int num) {
        return get(date, Calendar.DAY_OF_YEAR, num);
    }

    /**
     * 获取今天是指定年的第几天
     * @param millis
     * @return
     */
    public static int getDayOfYear(long millis) {
        return get(millis, Calendar.DAY_OF_YEAR);
    }

    /**
     * 获取今天是指定年的第几天
     * @param millis
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getDayOfYear(long millis, int num) {
        return get(millis, Calendar.DAY_OF_YEAR, num);
    }

    /**
     * 获取今天是周几
     * @return
     */
    public static int getNowDayOfWeek() {
        return get(Calendar.DAY_OF_WEEK) - 1;//外国是星期天是第一天,我们说的是星期一是第一天,所以为了迎合中国所以-1
    }

    /**
     * 获取今天是周几
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getDayOfWeekByNum(int num) {
        return get(Calendar.DAY_OF_WEEK, num) - 1;//外国是星期天是第一天,我们说的是星期一是第一天,所以为了迎合中国所以-1
    }

    /**
     * 获取今天是指定时间的周几
     * @param date
     * @return
     */
    public static int getDayOfWeek(Date date) {
        return get(date, Calendar.DAY_OF_WEEK) - 1;//外国是星期天是第一天,我们说的是星期一是第一天,所以为了迎合中国所以-1
    }

    /**
     * 获取今天是指定时间的周几
     * @param date
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getDayOfWeekByNum(Date date, int num) {
        return get(date, Calendar.DAY_OF_WEEK, num) - 1;//外国是星期天是第一天,我们说的是星期一是第一天,所以为了迎合中国所以-1
    }

    /**
     * 获取今天是指定时间的周几
     * @param millis
     * @return
     */
    public static int getDayOfWeek(long millis) {
        return get(millis, Calendar.DAY_OF_WEEK) - 1;//外国是星期天是第一天,我们说的是星期一是第一天,所以为了迎合中国所以-1
    }

    /**
     * 获取今天是指定时间的周几
     * @param millis
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int getDayOfWeekByNum(long millis, int num) {
        return get(millis, Calendar.DAY_OF_WEEK, num) - 1;//外国是星期天是第一天,我们说的是星期一是第一天,所以为了迎合中国所以-1
    }

    /**
     *
     * @param field
     * @return
     */
    public static int get(int field) {
        return CALENDAR.get(field);
    }

    /**
     *
     * @param field
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int get(int field, int num) {
        CALENDAR.add(field, num);
        return get(field);
    }

    /**
     *
     * @param date
     * @param field
     * @return
     */
    public static int get(Date date, int field) {
        return get(date.getTime(), field, 0);
    }

    /**
     *
     * @param date
     * @param field
     * @param num 增减对应的数量,增加则输入整数,减少则输入负数
     * @return
     */
    public static int get(Date date, int field, int num) {
        return get(date.getTime(), field, num);
    }

    /**
     *
     * @param millis
     * @param field
     * @return
     */
    public static int get(long millis, int field) {
        return get(millis, field, 0);
    }

    /**
     *
     * @param millis
     * @param field
     * @return
     */
    public static int get(long millis, int field, int num) {
        CALENDAR.setTimeInMillis(millis);
        CALENDAR.add(field, num);
        return CALENDAR.get(field);
    }

    /**
     * 计算两个日期之间相差的月数
     * @param date1
     * @param date2
     * @return
     */
    public static int getMonths(Date date1, Date date2) {
        int iMonth = 0;
        int flag = 0;
        try {
            Calendar objCalendarDate1 = Calendar.getInstance();
            objCalendarDate1.setTime(date1);
            Calendar objCalendarDate2 = Calendar.getInstance();
            objCalendarDate2.setTime(date2);
            if (objCalendarDate2.equals(objCalendarDate1))
                return 0;
            if (objCalendarDate1.after(objCalendarDate2)) {
                Calendar temp = objCalendarDate1;
                objCalendarDate1 = objCalendarDate2;
                objCalendarDate2 = temp;
            }
            if (objCalendarDate2.get(Calendar.DAY_OF_MONTH) < objCalendarDate1
                    .get(Calendar.DAY_OF_MONTH))
                flag = 1;

            if (objCalendarDate2.get(Calendar.YEAR) > objCalendarDate1
                    .get(Calendar.YEAR))
                iMonth = ((objCalendarDate2.get(Calendar.YEAR) - objCalendarDate1
                        .get(Calendar.YEAR))
                        * 12 + objCalendarDate2.get(Calendar.MONTH) - flag)
                        - objCalendarDate1.get(Calendar.MONTH);
            else
                iMonth = objCalendarDate2.get(Calendar.MONTH) - objCalendarDate1.get(Calendar.MONTH) - flag;

        } catch (Exception e) {
            e.printStackTrace();
        }
        return iMonth;
    }

    /**
     * 返回当前日期加减上指定天数
     * @param num 正数则加,负数则减
     * @return
     */
    public static Date getNewDayNumDate(int num) {
        CALENDAR.add(Calendar.DAY_OF_MONTH, num);
        return CALENDAR.getTime();
    }

    /**
     * 返回指定日期加减上指定天数
     * @param date 正数则加,负数则减
     * @param num
     * @return
     */
    public static Date getNewDayNumDate(Date date, int num) {
        CALENDAR.setTime(date);
        CALENDAR.add(Calendar.DAY_OF_MONTH, num);
        return CALENDAR.getTime();
    }

    /**
     * 返回指定日期加减上指定天数
     * @param millis 正数则加,负数则减
     * @param num
     * @return
     */
    public static Date getNewDayNumDate(long millis, int num) {
        CALENDAR.setTimeInMillis(millis);
        CALENDAR.add(Calendar.DAY_OF_MONTH, num);
        return CALENDAR.getTime();
    }

}

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie
应支付0元
点击重新获取
扫码支付

支付成功即可阅读