判断是否在活动时间内
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