lua 实现 函数 判断两个时间戳是否在同一天

函数用于判断两个时间戳是否在同一天。下面是对代码的详细解释:

函数参数

    • `stampA` 和 `stampB`:两个时间戳,用于比较。
    • `resetInfo`:一个可选参数,包含小时、分钟和秒数,用于调整时间戳。

函数实现步骤

    1. **参数校验**:使用 `assert` 函数确保 `stampA` 和 `stampB` 都不为 `nil`。如果任一参数为 `nil`,则抛出错误信息。
    1. **时间戳转换**:调用 `TimeUtil:toInt` 方法将时间戳转换为整数。
    1. **时间戳排序**:确保 `stampA` 小于等于 `stampB`,如果不是则交换它们的值。
    1. **时间戳调整**:如果 `resetInfo` 参数存在,则根据 `resetInfo` 中的小时、分钟和秒数调整 `stampA` 和 `stampB`。
    1. **时间戳转换为日期**:调用 `TimeUtil:fixTimeZoneFor_LUA_OS_DATE` 方法将时间戳转换为日期表(`*t` 格式),分别得到 `dateA` 和 `dateB`。
    1. **日期比较**:检查 `dateA` 和 `dateB` 是否在同一天,即它们的 `day`、`month` 和 `year` 是否相同。如果相同则返回 `true`,否则返回 `false`。
Lua 复制代码
--[[
    @desc 是否是同一天
    @param stampA 时间戳A
    @param stampB 时间戳B
    @param resetInfo[optional] 重置时间。比如12点重置,那么11点和13点就不是同一天,而23点和第二天11点是同一天。默认为hour=0,min=0,sec=0
]]
function TimeUtil:isSameDay(stampA, stampB, resetInfo)
    assert(stampA ~= nil, "error:stampA=nil")
    assert(stampB ~= nil, "error:stampB=nil")
    stampA = TimeUtil:toInt(stampA)
    stampB = TimeUtil:toInt(stampB)
    if stampA > stampB then
        stampA, stampB = stampB, stampA
    end
    if resetInfo then
        local resetSeconds = (resetInfo.hour or 0) * 3600 +
            (resetInfo.minute or 0) * 60 +
            (resetInfo.seconds or 0)
        stampA = stampA - resetSeconds
        stampB = stampB - resetSeconds
    end
    local dateA = TimeUtil:fixTimeZoneFor_LUA_OS_DATE("*t", stampA)
    local dateB = TimeUtil:fixTimeZoneFor_LUA_OS_DATE("*t", stampB)
    -- 在创建新号的时候,上面的数值可能存在空值
    -- 目前知道导致红点初始化错误,红点初始化中断
    if dateA and dateB then
        return dateA.day == dateB.day and
        dateA.month == dateB.month and
        dateA.year == dateB.year
    else
        return false
    end
end
相关推荐
CoderYanger15 小时前
A.每日一题:1140. 石子游戏 II
java·程序人生·算法·leetcode·游戏·职场和发展·深度优先
无别05217 小时前
【做游戏】做完游戏Demo后没地方发布?
游戏·玩游戏
lilian23318 小时前
HarmonyOS 7 新特性(二十九)|游戏伴随服务:悬浮协作与质量降级
游戏·语音识别·harmonyos
人民广场吃泡面18 小时前
DLSS 5 深度解析:当 AI 学会“创造”画面,实时游戏渲染迎来“GPT 时刻”
人工智能·gpt·游戏
学习星球20 小时前
AI 一句话生成 3D 游戏世界:腾讯 HY-World 2.0 开源深度解析与本地实战
开发语言·人工智能·游戏·3d·ai·课程设计·ai编程
Rain的Java大神之路21 小时前
高并发下的热点账户余额扣减:Redis+Lua脚本实现无锁记账
java·spring boot·redis·后端·spring cloud·缓存·lua
乌萨达21 小时前
梦幻新诛仙轻享电脑版怎么玩?模拟器安装与设置指南
游戏·安卓模拟器·雷电模拟器
qq_369224331 天前
ddraw.dll丢失是什么原因引起的?老游戏运行报错,多种可行修复手段汇总分享
windows·游戏·dll·dll修复·dll丢失·dll错误
xiaohe06012 天前
🎮 豆包完胜 DeepSeek ?!零玩家竞技场,AI Agent 专属对弈!
游戏·llm·agent
白搞电子2 天前
ESP-Mosaico 掌上游戏开发:LVGL 抛硬币动画、音频混音与 BMI270 摇晃触发
单片机·嵌入式硬件·物联网·游戏·音视频