倒计时计算
通用倒计时函数
local _TimeUnit_Seconds = { 24 * 3600, 3600, 60, 1 } ---天, 时, 分, 秒的秒数 ---@param seconds "秒" ---@param startTimeUnit "1-天, 2-时, 3-分, 4-秒" ---@param endTimeUnit "1-天, 2-时, 3-分, 4-秒" ---@param outValues "存放结果值, { 天, 时, 分, 秒 }" ---@return outValues function ConvertSecondToTimeUnitValues(seconds, startTimeUnit, endTimeUnit, outUnitValues) if nil == outUnitValues then outUnitValues = {} end local index1 = startTimeUnit or 1 local index2 = endTimeUnit or #_TimeUnit_Seconds for i=index1,index2 do local unitSec = _TimeUnit_Seconds[i] local unitValue = math.floor(seconds / unitSec) seconds = seconds - unitValue * unitSec outUnitValues[i] = unitValue end for i=1,index1-1 do outUnitValues[i] = 0 end return outUnitValues end
超过天: 10天18时03分05秒。不足1天: 18时03分05秒
local leftTime = xxx; local unitValues = {} ConvertSecondToTimeUnitValues(leftTime, 1, 4, unitValues) if leftTime >= 24 * 3600 then local str = string.format("%s天%02d时%02d分%02d秒", unitValues[1], unitValues[2], unitValues[3], unitValues[4]) else local str = string.format("%02d时%02d分%02d秒", unitValues[2], unitValues[3], unitValues[4]) end
超过天: 1天。不足1天: 18时03分05秒
local leftTime = xxx; local unitValues = {} ConvertSecondToTimeUnitValues(leftTime, 1, 4, unitValues) if leftTime >= 24 * 3600 then local str = string.format("%s天", unitValues[1]) else local str = string.format("%02d时%02d分%02d秒", unitValues[2], unitValues[3], unitValues[4]) end
超过天: 28时12分30秒。不足1天: 18时12分30秒
local leftTime = xxx; local unitValues = {} ConvertSecondToTimeUnitValues(leftTime, 2, 4, unitValues) local str = string.format("%02d时%02d分%02d秒", unitValues[2], unitValues[3], unitValues[4])
超过天: 1天。不足1天: 18:12:30。不足1小时:12:30。不足1分钟:30秒
local leftTime = xxx; local unitValues = {} ConvertSecondToTimeUnitValues(leftTime, 2, 4, unitValues) if leftTime >= 24 * 3600 then local str = string.format("%s天", unitValues[1]) elseif leftTime >= 3600 then local str = string.format("%02d:%02d:%02d", unitValues[2], unitValues[3], unitValues[4]) elseif leftTime >= 60 then local str = string.format("%02d:%02d", unitValues[3], unitValues[4]) else local str = string.format("%d秒", unitValues[4]) end