lua 计算倒计时,天 周 月倒计时

--通过服务器时间 获得明天零点的时间戳
function GetNextDayZeroTime(timeNum)
    --获得当前服务器的时间
    local t1 = timeNum
    if not t1 then
        t1 =SystemTime()
    end
    --获得时间格式
    local tab = os.date("*t",t1)
    tab.hour = 23;
    tab.min  = 59;
    tab.sec  = 59;
    --获得第二天零点的时间戳
    local t2 = so.time(tab) + 1

    return t2
end
--通过服务器时间 获得当天零点的时间戳 -timeNum
function GetNowDayZeroTime(timeNum)
    --获得当前服务器的时间
    local t1 = timeNum
    if not timeNum then
        t1 =SystemTime()
    end

    --获得时间格式
    local tab = os.date("*t",t1)
    tab.hour = 0
    tab.min  = 0
    tab.sec  = 0
    --获得第二天零点的时间戳
    local t2 = os.time(tab)

    return t2
end
-- 小时:分钟:秒
function SecondToStrFormat( time )
    local hour = math.floor(time/3600);
    local minute = math.fmod(math.floor(time/60), 60)
    local second = math.fmod(time, 60)
    return string.format("%02d:%02d:%02d", hour, minute, second), hour, minute, second
end
--显示时间倒计时 --ignoreWeek true是否忽略周末倒计时 false就是周倒计时 --ignoreMonth true是否忽略月底,false是月倒计时  updateTime更新时间 有些更新变成了凌晨五点
function ShowTimeCutDown(ignoreWeek,ignoreMonth,updateTime)
    if not updateTime then
        updateTime = 0
    end

    --获得当前服务器的时间
    local t1 =SystemTime()
    --获得时间格式
    local tab = os.date("*t",t1)

    local t2 = 0
    --当时间小于更新时间
    if tab.hour < updateTime then
        t2 = GetNowDayZeroTime(t1) + updateTime*3600
    else
        --获得第二天零点的时间戳
        t2 = GetNextDayZeroTime(t1) + updateTime*3600
    end


    local leveDay =0
      --到本周末还有多少时间
    if not ignoreWeek then
        --周日
        if tab.wday == 1 then
            if tab.hour < updateTime then
                leveDay = 6
            else
                leveDay = 7
            end
        elseif tab.wday == 2 then
            --周一
            if tab.hour < updateTime then
                leveDay = 7
            else
                leveDay = 1
            end
        else
            if tab.hour < updateTime then
                leveDay = tab.wday -2
            else
                leveDay = tab.wday-1
            end
        end

        leveDay = 7 - leveDay
    end

      if not ignoreMonth then
        --到月底的时间
        leveDay = tab.day
        --判断到月底的天数
        local days = GameDate("%d",GameTime({year=GameDate("%Y"),month=GameDate("%m")+1,day=0}))
        --每个月的第一天特殊判断
        if leveDay == 1 then
            if tab.hour < updateTime then
                leveDay = 0
            else
                leveDay = days-leveDay
            end
        elseif tonumber(leveDay) == tonumber(days) then
            --每个月的最后一天
            if tab.hour < updateTime then
                leveDay = 1
            else
                leveDay = 0
            end
        else
            leveDay = days-leveDay+1
        end
    end

    --转换显示格式
    local str =""
    local diff = os.difftime(t2,t1)
    local all,hour,minute,second = SecondToStrFormat(diff)
    if(leveDay>0)then
        str = StrLang("%d天%d小时",leveDay,hour)
    else
        str = all
    end

    return str,diff
end
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值