倒计时计算
通用倒计时函数
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义