倒计时常用工具函数


比如: 超过天: 10天18时03分05秒, 不足1天: 18时03分05秒

 1 function CD_DayHHmmss(sec, unitNames, noDayUnitNames)
 2     if nil == unitNames or #unitNames < 4 then
 3         unitNames = { "-", "-", "-", "" }
 4     end
 5     if nil == noDayUnitNames then noDayUnitNames = unitNames end
 6 
 7     local unitSecArr = { 24 * 3600, 3600, 60, 1 } --天,时,分,秒的秒数
 8     local tb = {}
 9     for i=1,#unitSecArr do
10         local unitSec = unitSecArr[i]
11         local unitValue = math.floor(sec / unitSec)
12         tb[i] = unitValue
13         sec = sec - unitValue * unitSec
14     end
15 
16     if tb[1] > 0 then
17         return string.format("%d%s%02d%s%02d%s%02d%s", tb[1], unitNames[1], tb[2], unitNames[2], tb[3], unitNames[3], tb[4], unitNames[4])
18     end
19     return string.format("%02d%s%02d%s%02d%s", tb[2], noDayUnitNames[2], tb[3], noDayUnitNames[3], tb[4], noDayUnitNames[4])
20 end

function CD_DayHHmm(sec, unitNames)

function CD_DayHH(sec, unitNames)
也是可以以此类推

超过天: 10天18时3分5秒, 不足1天: 18时3分5秒或18:3:5

 1 function CD_DayHms(sec, unitNames, noDayUnitNames)
 2     if nil == unitNames or #unitNames < 4 then
 3         unitNames = { "-", "-", "-", "" }
 4     end
 5     if nil == noDayUnitNames then noDayUnitNames = unitNames end
 6 
 7     local unitSecArr = { 24 * 3600, 3600, 60, 1 } --天,时,分,秒的秒数
 8     local tb = {}
 9     for i=1,#unitSecArr do
10         local unitSec = unitSecArr[i]
11         local unitValue = math.floor(sec / unitSec)
12         tb[i] = unitValue
13         sec = sec - unitValue * unitSec
14     end
15 
16     if tb[1] > 0 then
17         return string.format("%d%s%d%s%d%s%d%s", tb[1], unitNames[1], tb[2], unitNames[2], tb[3], unitNames[3], tb[4], unitNames[4])
18     end
19     return string.format("%d%s%d%s%d%s", tb[2], noDayUnitNames[2], tb[3], noDayUnitNames[3], tb[4], noDayUnitNames[4])
20 end

超过天: 38:03:05或38时03分05秒, 不足1天: 08:03:05或08时03分05秒

 1 function CD_Hourmmss(sec, unitNames)
 2     if nil == unitNames or #unitNames < 4 then
 3         unitNames = { "-", ":", ":", "" }
 4     end
 5     local unitSecArr = { 24 * 3600, 3600, 60, 1 } --天,时,分,秒的秒数
 6     local tb = {}
 7     for i=2,#unitSecArr do
 8         local unitSec = unitSecArr[i]
 9         local unitValue = math.floor(sec / unitSec)
10         tb[i] = unitValue
11         sec = sec - unitValue * unitSec
12     end
13 
14     return string.format("%02d%s%02d%s%02d%s", tb[2], unitNames[2], tb[3], unitNames[3], tb[4], unitNames[4])
15 end

超过天: 38:03:05或38时03分05秒, 不足1天: 08:03:05或08时03分05秒

 1 function CD_Hourmm(sec, unitNames)
 2     if nil == unitNames or #unitNames < 4 then
 3         unitNames = { "-", ":", ":", "" }
 4     end
 5     local unitSecArr = { 24 * 3600, 3600, 60, 1 } --天,时,分,秒的秒数
 6     local tb = {}
 7     for i=2,3 do
 8         local unitSec = unitSecArr[i]
 9         local unitValue = math.floor(sec / unitSec)
10         tb[i] = unitValue
11         sec = sec - unitValue * unitSec
12     end
13 
14     return string.format("%02d%s%02d%s", tb[2], unitNames[2], tb[3], unitNames[3])
15 end
 1 function CD_Minss(sec, unitNames)
 2     if nil == unitNames or #unitNames < 4 then
 3         unitNames = { "-", ":", ":", "" }
 4     end
 5     local unitSecArr = { 24 * 3600, 3600, 60, 1 } --天,时,分,秒的秒数
 6     local tb = {}
 7     for i=3,4 do
 8         local unitSec = unitSecArr[i]
 9         local unitValue = math.floor(sec / unitSec)
10         tb[i] = unitValue
11         sec = sec - unitValue * unitSec
12     end
13 
14     return string.format("%02d%s%02d%s", tb[3], unitNames[3], tb[4], unitNames[4])
15 end
lua