DateUtils工具类

一般的日期转换操作都有,会一直更新,完善。持续更新中,你想要的我都有!

package com.wsqs.dataimport.common.utils;

import static java.util.Calendar.DATE;
import static java.util.Calendar.DAY_OF_MONTH;
import static java.util.Calendar.MONTH;
import static java.util.Calendar.YEAR;
import static java.util.Calendar.getInstance;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期时间相关工具
 *
 * @author Louis
 * @date Sep 23, 2018
 */
public class DateTimeUtils {

    public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DATE_MILLIS = "yyyy-mm-dd HH:mm:ss.S";
    public static final String DATE_SLASH = "yyy/MM/dd HH:mm:ss";
    public static final String DATE_SLASH_DAY = "yyy/MM/dd";
    public static final String DATE_YEAR_MONTH_DAY = "yyyy-MM-dd";
    public static final String DATE_DAY_MONTH_YEAR = "dd-MM-yyyy";
    public static final String DATE_YEAR_MONTH = "yyy-MM";
    public static final String HOUR_MINUTE_SECOND = "HH:mm:ss";
    public static final String DATE_MONTH = "MM";
    private static final String DATE_DAY = "dd";

    /**
     * 获取当前标准格式化日期时间
     *
     * @param
     * @return
     */
    public static String getDateTime() {
        return getDateTime(new Date());
    }

    /**
     * 标准格式化日期时间
     *
     * @param date
     * @return
     */
    public static String getDateTime(Date date) {
        return (new SimpleDateFormat(DATE_FORMAT)).format(date);
    }

    /**
     * 标准格式化日期时间
     *
     * @param date
     * @return
     */
    public static String getDateYmd(Date date) {
        return (new SimpleDateFormat(DATE_YEAR_MONTH_DAY)).format(date);
    }

    /**
     * String 类型的 Date 转 Date 类型 Date
     * @param date
     * @return
     */
    public static Date getDateTimeYmd(String date) {
        try {
            return (new SimpleDateFormat(DATE_YEAR_MONTH_DAY)).parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
            try {
                return (new SimpleDateFormat(DATE_YEAR_MONTH_DAY)).parse(date);
            } catch (ParseException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        return new Date();
    }



    /**
     * 日期格式String 转 Date
     *
     * @param date
     * @return
     */

    public static Date getDateTime(String date) {
        try {
            return (new SimpleDateFormat(DATE_FORMAT)).parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
            try {
                return (new SimpleDateFormat(DATE_MILLIS)).parse(date);
            } catch (ParseException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        return new Date();
    }

    public static String getDate() {
        return getDateTime(new Date());
    }


    public static String getDate(Date date) {
        return (new SimpleDateFormat(DATE_SLASH)).format(date);
    }

    public static String getDateDay(Date date) {
        return (new SimpleDateFormat(DATE_YEAR_MONTH_DAY)).format(date);
    }

    public static Date getDate(String date) {
        try {
            return (new SimpleDateFormat(DATE_SLASH)).parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return new Date();
    }

    public static Date getDateDay(String date) {
        try {
            return (new SimpleDateFormat(DATE_SLASH_DAY)).parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return new Date();
    }

    /**
     * 精确到毫秒
     *
     * @param date
     * @return
     */
    public static String getDateTimeMillis(Date date) {
        return (new SimpleDateFormat(DATE_MILLIS)).format(date);
    }

    public static String addDays(Date time) {
        Calendar date = getInstance();
        date.setTime(time);
        date.set(DATE, date.get(DATE) + 1);
        return (new SimpleDateFormat(DATE_FORMAT)).format(date.getTime());

    }

    public static String addDays(String time,int i) {
        Calendar date = getInstance();
        date.setTime(getDateTimeYmd(time));
        date.set(DATE, date.get(DATE) + i);
        return (new SimpleDateFormat(DATE_YEAR_MONTH_DAY)).format(date.getTime());
    }

    public static String day_Math_Year(String time) {
        Calendar date = getInstance();
        date.setTime(getDateTimeYmd(time));
        return (new SimpleDateFormat(DATE_DAY_MONTH_YEAR)).format(date.getTime());
    }

    public static String addDay(String time,int i) {
        Calendar date = getInstance();
        date.setTime(getDateTimeYmd(time));
        date.set(DATE, date.get(DATE) + i);
        return (new SimpleDateFormat(DATE_FORMAT)).format(date.getTime());
    }
    /**
     * 当前日期减几天
     *
     * @param i
     * @return
     */
    public static String subDays(int i) {
        Calendar date = getInstance();
        date.setTime(DateTimeUtils.getDateTime(DateTimeUtils.getDateTime()));
        date.set(DATE, date.get(DATE) - i);
        return (new SimpleDateFormat(DATE_FORMAT)).format(date.getTime());

    }

    public static String conversionTime(String date) {
        String time = addDays(getDateTimeYmd(date));
        return  getBeforeSecond(time,1);
    }

    public static String conversionDate(String date) {
        return getDateTime(getDateTimeYmd(date));
    }

    /**
     * 减去1秒
     * @param second
     * @return
     */
    public static String getBeforeSecond(String date, int second) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(getDateTimeYmd(date));
        calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND) - second);
        return (new SimpleDateFormat(DATE_FORMAT)).format(calendar.getTime());
    }

    /**
     * 减去几秒
     * @param second
     * @return
     */
    public static String BeforeSecond(int second){
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND) - second);
        return (new SimpleDateFormat(DATE_FORMAT)).format(calendar.getTime());
    }

    public static String BeforeSecond(String date,int second){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(getDateTimeYmd(date));
        calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND) - second);
        return (new SimpleDateFormat(DATE_FORMAT)).format(calendar.getTime());
    }
    /**
     * 获取本月第一天
     *
     * @return
     */
    public static String getTimesMonthmorning() {
        Calendar cal = Calendar.getInstance();
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
        return (new SimpleDateFormat(DATE_FORMAT)).format(cal.getTime());
    }

    /**
     * 获取当前月份最后一天
     */

    public static String  getEndMonthDay(){
        Calendar cal = getInstance();
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        return (new SimpleDateFormat(DATE_DAY)).format(cal.getTime());
    }
    /**
     * 本周第一天
     *
     * @return
     */
    public static String getTimesWeekmorning() {
        Calendar cal = Calendar.getInstance();
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        return (new SimpleDateFormat(DATE_FORMAT)).format(cal.getTime());
    }

    public static String thisWeekMonDay() {
        Calendar cal = Calendar.getInstance();
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        return (new SimpleDateFormat(DATE_YEAR_MONTH_DAY)).format(cal.getTime());
    }
    /**
     * 获取当前月一号
     * @return
     */
    public static String getBeginDayOfYear() {
        Calendar cal = Calendar.getInstance();
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.YEAR));
        return (new SimpleDateFormat(DATE_FORMAT)).format(cal.getTime());
    }

    /**
     * 获取当前月一号
     * @return
     */
    public static String getMonthDay() {
        Calendar cal = Calendar.getInstance();
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.YEAR));
        return (new SimpleDateFormat(DATE_YEAR_MONTH_DAY)).format(cal.getTime());
    }

    /**
     * 当前月份一号时间加一年
     *
     * @return
     */
    public static String getCurrentYearEndTime() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(DateTimeUtils.getDateTime(getBeginDayOfYear()));
        cal.add(Calendar.YEAR, 1);
        return (new SimpleDateFormat(DATE_FORMAT)).format(cal.getTime());
    }

    /**
     * 当前月份一号减一年
     *
     * @return
     */
    public static String getLastYearStartTime() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(DateTimeUtils.getDateTime(getBeginDayOfYear()));
        cal.add(Calendar.YEAR, -1);
        return (new SimpleDateFormat(DATE_FORMAT)).format(cal.getTime());
    }

    /**
     * 获取当前月份
     */

    public static String getMonth() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(DateTimeUtils.getDateTime(getBeginDayOfYear()));
        return (new SimpleDateFormat(DATE_MONTH)).format(cal.getTime());
    }
    /**
     * 获取今年第一天
     *
     * @return
     */
    public static String getCurrYearFirst() {
        Calendar currCal = Calendar.getInstance();
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, currCal.get(Calendar.YEAR));
        Date time = calendar.getTime();
        return (new SimpleDateFormat(DATE_FORMAT)).format(time);
    }

    public static String getCurrYearFirst(int i) {
        Calendar currCal = Calendar.getInstance();
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, currCal.get(Calendar.YEAR));
        calendar.add(MONTH,+i);
        Date time = calendar.getTime();
        return (new SimpleDateFormat(DATE_FORMAT)).format(time);
    }

    /**
     * 今天第一个月 月份格式
     * @return
     */
    public static String TheFirstMonth() {
        Calendar currCal = Calendar.getInstance();
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, currCal.get(Calendar.YEAR));
        Date time = calendar.getTime();
        return (new SimpleDateFormat(DATE_YEAR_MONTH)).format(time);
    }

    public static String TheFirstMonth(int i) {
        Calendar currCal = Calendar.getInstance();
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, currCal.get(Calendar.YEAR));
        calendar.add(MONTH,+i);
        Date time = calendar.getTime();
        return (new SimpleDateFormat(DATE_YEAR_MONTH)).format(time);
    }



    /**
     * 获取今年的最后一天
     *
     * @return
     */
    public static String getCurrYearLast() {
        Calendar currCal = Calendar.getInstance();
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.YEAR, currCal.get(Calendar.YEAR));
        calendar.roll(Calendar.DAY_OF_YEAR, -1);
        Date time = calendar.getTime();
        return (new SimpleDateFormat(DATE_FORMAT)).format(time);
    }

    /**
     * 今天
     *
     * @return
     */
    public static String todayDate() {
        Calendar cal = Calendar.getInstance();
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        return (new SimpleDateFormat(DATE_FORMAT)).format(cal.getTime());
    }

    /**
     * 昨天
     *
     * @return
     */
    public static String yesterday() {
        Calendar cal = Calendar.getInstance();
        cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH) - 1, 0, 0, 0);
        return (new SimpleDateFormat(DATE_FORMAT)).format(cal.getTime());
    }

    /**
     * 前天
     *
     * @return
     */
    public static String beforeYesterDay() {
        Calendar cal = getInstance();
        cal.set(cal.get(YEAR), cal.get(MONTH), cal.get(DAY_OF_MONTH) - 2, 0, 0, 0);
        return (new SimpleDateFormat(DATE_FORMAT)).format(cal.getTime());
    }

    /**
     * 几个小时前
     *
     * @param ihour
     * @return
     */
    public static String getBeforeHourTime(int ihour) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - ihour);
        return (new SimpleDateFormat(DATE_FORMAT)).format(calendar.getTime());
    }

    public static String getBeforeHourTime(String date, int ihour) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(getDateTimeYmd(date));
        calendar.add(Calendar.HOUR,+ihour);
        return (new SimpleDateFormat(DATE_FORMAT)).format(calendar.getTime());
    }

    public static String getDateYearMonthDay(Date date) {
        return (new SimpleDateFormat(DATE_YEAR_MONTH_DAY)).format(date);
    }

    /**
     * 传入两个日期获取它们之间的天数
     * @param before
     * @param after
     * @return
     */
    public static double getDistanceOfTwoDate(Date before, Date after) {
        long beforeTime = before.getTime();
        long afterTime = after.getTime();
        return (afterTime - beforeTime) / (1000 * 60 * 60 * 24);
    }

    /**
     * 传入两个日期获取它们之间的月数
     * @param before
     * @param after
     * @return
     */
    public static double getDistanceMonth(Date before, Date after){
        Calendar bef = Calendar.getInstance();
        Calendar aft = Calendar.getInstance();
        bef.setTime(before);
        aft.setTime(after);
        int result = aft.get(Calendar.MONTH) - bef.get(Calendar.MONTH);
        int month = (aft.get(Calendar.YEAR) - bef.get(Calendar.YEAR)) * 12;
        return Math.abs(month + result);
    }

    public static void main(String[] args) {
//        System.out.println(DateTimeUtils.getDateDay("2018/10/23"));
        System.out.println(DateTimeUtils.day_Math_Year(DateTimeUtils.getDateDay(DateTimeUtils.getDateDay("2018/10/23"))));
//        System.out.println(DateTimeUtils.day_Math_Year("2018-10-23"));
    }
}```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值