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
}
}