java时间处理工具类

77 阅读1分钟
package com.rzico.basics.utils;

import com.rzico.exception.CustomException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.*;

@Slf4j
@Component
public class TimeUtils
{
    /**
     * 获取今天开始时间00:00:00
     * @return
     */
    public static Date todayStart(Date date){
        Calendar start = Calendar.getInstance();
        start.setTime(date);
        start.set( Calendar.HOUR_OF_DAY,0);
        start.set( Calendar.MINUTE, 0);
        start.set( Calendar.SECOND,0);
        start.set( Calendar.MILLISECOND,0);
        return start.getTime();
    }

    /**
     * 获取今天增加天数后的结束时间11:59:59
     * @return
     */
    public static Date addDayEnd(int day){
        Date date=todayStart(new Date());
        return DateUtils.addMilliseconds(DateUtils.addDays(date,day),-1000);
    }

    /**
     * 获取本月一号的00:00:00
     * @return
     */
    public static Date monthStart(Date date){
        Calendar start = Calendar.getInstance();
        start.setTime(date);
        start.set(Calendar.DAY_OF_MONTH, 1);
        start.set( Calendar.HOUR_OF_DAY,0);
        start.set( Calendar.MINUTE, 0);
        start.set( Calendar.SECOND,0);
        start.set( Calendar.MILLISECOND,0);
        return start.getTime();
    }

    /**
     * 获取本月结束时间
     * @return
     */
    public static Date monthEnd(Date date){
        Date result=monthStart(date);
        return DateUtils.addMilliseconds(DateUtils.addMonths(result,1),-1000);
    }

    /**
     * 获取星期一的00:00:00
     * @return
     */
    public static Date weekStart(Date date){
        Calendar start = Calendar.getInstance();
        start.setTime(date);
        if(start.get(Calendar.DAY_OF_WEEK)==1){
            start.add(Calendar.DAY_OF_MONTH, -1);
        }
        start.set(Calendar.DAY_OF_WEEK, 2);
        start.set( Calendar.HOUR_OF_DAY,0);
        start.set( Calendar.MINUTE, 0);
        start.set( Calendar.SECOND,0);
        start.set( Calendar.MILLISECOND,0);
        return start.getTime();
    }

    /**
     * 获取时间月份
     * @return
     */
    public static int getMonth(Date date){
        Calendar start = Calendar.getInstance();
        start.setTime(date);

        return start.get(Calendar.MONTH) + 1;
    }

    /**
     * 获取时间小时是否在范围内
     * @return
     */
    public static boolean getIfHour(Date date,int startHour,int endHour){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int hour=calendar.get(Calendar.HOUR_OF_DAY);
        boolean bool=false;
        if(hour>=startHour && hour<endHour){
            bool=true;
        }
        return bool;
    }

    /**
     * (时间格式转换)
     * @param 将"yyyy-MM-dd HH:mm:ss"转换为"yyyyMMdd"
     * @return String 返回类型
     * @author xsw
     * @2016-12-4下午03:10:03
     */
    public static String dateChange(String dateStr){
        String result="";
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = sdf.parse(dateStr);
            SimpleDateFormat resultSdf = new SimpleDateFormat("yyyyMMdd");
            result = resultSdf.format(date);
        } catch (Exception e) {
            throw new CustomException("时间转换出错");
        }
        return result;
    }
}