找回密码
 register

QQ登录

只需一步,快速开始

查看: 72|回复: 0

到期时间计算、时间转换函数、获取当前年月日 LuaFnDayTime2DateTime 、getNewDate 、 GetGameTime

[复制链接]

到期时间计算、时间转换函数、获取当前年月日 LuaFnDayTime2DateTime 、getNewDate 、 GetGameTime

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:94
  • 打卡月天数:17
  • 打卡总奖励:94
  • 最近打卡:2025-01-18 01:28:20
Waylee

主题

0

回帖

1万

积分

仙帝

积分
12364
Waylee 2023-4-21 10:36 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×
文章编辑人员:雪舞
内容测试时间:2023-4-21 10:34:29
测试版本:新武侠世界

获取当前时间:
local nCurrentTime = tonumber(date("%Y%m%d",GetGameTime(sceneId,selfId)))


输出内容:20230421

增加两天后过期的函数:
local nTime = LuaFnDayTime2DateTime(sceneId,selfId,getNewDate(sceneId,GetDayTime(),2))


输出内容:20230423


--计算过期时间函数
function getNewDate(sceneId,nTime,nCount)
        if not nTime or not nCount then
                return 0
        end
        local nYear = floor(nTime/1000)
        local nDay = mod(nTime,1000)
        nDay = nDay + nCount
        if nDay <= 365 then
                local nTime_R = nTime + nCount
                return nTime_R
        else
                if mod(nYear,4) ~= 0 then
                        local nTime_R = floor(nTime/1000) + 1
                        nDay = nDay - 365
                        -- nYear = nYear * 1000 + nDay
                        nYear = nTime_R * 1000 + nDay --修复12月跨年bUG 雪舞
                        return nYear
                else
                        --闰年
                        local nTime_R = nTime + nCount
                        return nTime_R
                end
        end
end


--******************************************************
--天日期(GetDayTime())转换
--******************************************************
function LuaFnDayTime2DateTime(sceneId,selfId,nDayTime)
        --参考:GetDayTime()产生的数值nDayTime为:19168 代表19年第168天
        local nDay = mod(nDayTime,1000)--总天数
        local nMonth = {31,28,31,30,31,30,31,31,30,31,30,31}-- 12个月份的天数
        if mod(floor(nDayTime/1000),4) == 0 then --闰年:2月份29天
                nMonth[2] = 29 
        end
        local nTempDay = nDay --临时总天数
        local nMonthTime = 0
        for i = 1,12 do
                nTempDay = nTempDay - nMonth[i] --临时总天数 减去 1-12个月
                if nTempDay < 0 then --临时总天数少于0时
                        nMonthTime = i --月份
                        break
                end
        end
        local nTempDay_add = 0 
        for i = 1,nMonthTime - 1 do
                nTempDay_add = nTempDay_add + nMonth[i]
        end
        nDay = nDay - nTempDay_add + 1
        local nEcho = "20"..floor(nDayTime/1000)
        if nMonthTime < 10 then
                nMonthTime = "0"..nMonthTime
        end
        nEcho = nEcho..nMonthTime
        if nDay < 10 then
                nDay = "0"..nDay
        end
        --雪舞 修正跨年月(12月份)游龙卡失效的问题 2021-12-6 23:27:55
        if GetTodayMonth() == 11 then --11:为12月
                nEcho = nEcho + 100
        end
        nEcho = nEcho..nDay
        return tonumber(nEcho)
end


您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |天天打卡

GMT+8, 2025-1-19 23:09 , Processed in 0.097561 second(s), 8 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表