RuoYi | 时间格式化

968 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

  • 时间:2022.5.27
  • 内容:
    • 业务中偶尔使用到的方法。
    • DateUtils里的方法。
  • 备注:
    • RuoYi有一个自带的DateUtils的时间格式化方法,这里记录一下我自己常用的和新增的一些。

1 format

这里有个很妙的地方~

  • MM dd HH mm如果换成了单个,那么遇上0几这种数字的时候,会自动消零。
  • 大写的H是24小时制,小写的h是12小时制。
  • 一般来说,分钟还是需要两位数的。下面显示的是最为常用的格式:
SimpleDateFormat f = new SimpleDateFormat("yyyy.M.d H:mm");
String duringTime = "";
duringTime += f.format(s.getBeginTime()); //开始时间
duringTime += "-";
duringTime += f.format(s.getEndTime()); //结束时间
map.put("during_time",duringTime);

2 获取指定时间是不是在指定时间区间内的

/**
 * 获取指定时间是不是在指定时间区间内的
 * @param test
 * @param begin
 * @param end
 * @return java.lang.Boolean
 */
public static Boolean getIsInTime(Date test,Date begin,Date end){
    Time testTime = new Time(0,0,0);
    Time beginTime = new Time(0,0,0);
    Time endTime = new Time(0,0,0);

    beginTime.setHours(begin.getHours());
    beginTime.setMinutes(begin.getMinutes());
    beginTime.setSeconds(begin.getSeconds());

    endTime.setHours(end.getHours());
    endTime.setMinutes(end.getMinutes());
    endTime.setSeconds(end.getSeconds());

    testTime.setHours(test.getHours());
    testTime.setMinutes(test.getMinutes());
    testTime.setSeconds(test.getSeconds());

    if(testTime.after(beginTime) && testTime.before(endTime)){
        return true;
    }
    return false;
}

3 获取指定时间段是不是在指定时间区间内的

/***
 * 获取指定时间段是不是在指定时间区间内的
 * @param startDateOne 第一个时间段的开始时间
 * @param endDateOne 第一个时间段的结束时间
 * @param startDateTwo 第二个时间段的开始时间
 * @param endDateTwo 第二个时间段的结束时间
 * @return
 */
public static Boolean IsInterSection(Date startDateOne,Date endDateOne,Date startDateTwo,Date endDateTwo)
{
    Date maxStartDate = startDateOne;
    if(maxStartDate.before(startDateTwo))
    {
        maxStartDate = startDateTwo;
    }

    Date minEndDate = endDateOne;
    if(endDateTwo.before(minEndDate))
    {
        minEndDate = endDateTwo;
    }
    if(maxStartDate.before(minEndDate) || (maxStartDate.getTime() == minEndDate.getTime()))
    {
        return true;
    }
    else {
        return  false;
    }
}

3 获取两个日期的日期差,忽略时间

/**
 * 获取两个日期的日期差,忽略时间
 * @param d1
 * @param d2
 * @return 取得差距天数
 */
public static Long getDateDates(Date d1,Date d2){
    Long starTime=d1.getTime();
    Long endTime=d2.getTime();
    Long num=endTime-starTime;//时间戳相差的毫秒数
    return num/24/60/60/1000;
}

4 获取两个时间的时间差,忽略日期

/**
 * 获取两个时间的时间差,忽略日期
 * @param begin
 * @param end
 * @return 取得秒
 */
public static int getDateSeconds(Date begin,Date end){
    Time rs = new Time(0,0,0);
    rs.setHours(end.getHours()-begin.getHours());
    rs.setMinutes(end.getMinutes()-begin.getMinutes());
    rs.setSeconds(end.getSeconds()-begin.getSeconds());
    return rs.getHours()*60*60+rs.getMinutes()*60+rs.getSeconds();
}