时间段周期,判断时间是否在周期时间段之内


import com.alibaba.fastjson.JSON;
import com.google.common.collect.Range;

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

public class Test2 {


    public static void main(String[] args) throws ParseException {

        Boolean xsTime = isXsTime(5, "{\"startTime1\":\"2021-11-10 12:01:03 - 2021-11-11 00:00:00\",\"startTime2\":\"2021-12-24 02:02:02 - 2021-12-27 05:04:03\"}","2021-12-28 05:00:00");
        System.out.println(xsTime);

    }
    /**
     *  判断当前时间是否在设置的周期之内
     * @param zqDay 周期天数
     * @param timeDiyJson 不同的时间段 json
     * @param currentTime 当前的时间
     * @return 结果
     */
    public static  Boolean isXsTime(Integer zqDay, String timeDiyJson, String currentTime) throws ParseException {
        Map mapTypes = JSON.parseObject(timeDiyJson);

        Boolean isOK = false;

        for (Object obj : mapTypes.keySet()) {
            String time = (String) mapTypes.get(obj);
            String[] zqTime = time.split(" - ");
            if (zqTime != null && zqTime.length > 1) {
                String startTime = zqTime[0];
                String endTime = zqTime[1];

                DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                //三个时间分别初始化
                Calendar start = Calendar.getInstance();
                Calendar end = Calendar.getInstance();
                Calendar currentT = Calendar.getInstance();

                currentT.setTime(format.parse(currentTime));
                start.setTime(format.parse(startTime));
                end.setTime(format.parse(endTime));


                // 只有当前的时间大于开始的时间
                while (!currentT.before(start)) {
                    //判断当前的时间是否在于时间范围内
                    boolean isPoint = Range.closed(start, end).contains(currentT);
                    if(isPoint){
                        isOK = isPoint;
                        break;
                    }
                    //没有在范围内 ,移动周期
                    start.add(Calendar.DATE, zqDay);
                    end.add(Calendar.DATE, zqDay);
                }

            }

        }
        return isOK;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值