判断是否在活动时间内

 

local _zeroTimestamp = 0 ---今天0点的时间戳
local _wday = 0 --今天周几(1_周一, 7_周日)

---@return "今天0点时间戳, 今天已过秒数, 今天周几"
function GetDayTimeInfo()
    local curTime = os.time()
    local elapseTime = curTime - _zeroTimestamp
    if elapseTime < 0 or elapseTime >= 24 * 3600 then
        local dt = os.date("*t", curTime)
        dt.hour = 0
        dt.min = 0
        dt.sec = 0
        _zeroTimestamp = os.time(dt)
        elapseTime = curTime - _zeroTimestamp
        --修正星期
        _wday = dt.wday
        if 1 == _wday then _wday = 7
        else _wday = _wday - 1 end
    end

    return _zeroTimestamp, elapseTime, _wday
end


function GetStatus(startWeeks, endWeeks, startDaySec, endDaySec)
    local zeroTimestamp, dayElapseTime, wday = GetZeroTimeStamp()
    for i=1,#startWeeks do
        local startWday = startWeeks[i]
        if wday == startWday then
            local startLeftTime = startDaySec - dayElapseTime
            if startLeftTime > 0 then
                return "not_started", startLeftTime --今天还未开始
            end
        end

        local endWday = endWeeks[i]
        if wday == endWday then
            local endLeftTime = endDaySec - dayElapseTime
            if endLeftTime > 0 then
                return "ing", endLeftTime
            end
            return "ended", 0 --今天已结束
        end

        if wday >= startWday and wday < endWday then
            local deltaDays = endWday - wday
            local endLeftTime = (24 * 3600 - dayElapseTime) + (deltaDays - 1) * 24 * 3600 + endDaySec
            return "ing", endLeftTime
        end
    end

    return "not_in_time", 0 --不在时间范围
end

 

posted @ 2024-03-26 23:16  yanghui01  阅读(3)  评论(0编辑  收藏  举报