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

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

### 函数参数

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

### 函数实现步骤

  • 1. **参数校验**:使用 `assert` 函数确保 `stampA` 和 `stampB` 都不为 `nil`。如果任一参数为 `nil`,则抛出错误信息。
  • 2. **时间戳转换**:调用 `TimeUtil:toInt` 方法将时间戳转换为整数。
  • 3. **时间戳排序**:确保 `stampA` 小于等于 `stampB`,如果不是则交换它们的值。
  • 4. **时间戳调整**:如果 `resetInfo` 参数存在,则根据 `resetInfo` 中的小时、分钟和秒数调整 `stampA` 和 `stampB`。
  • 5. **时间戳转换为日期**:调用 `TimeUtil:fixTimeZoneFor_LUA_OS_DATE` 方法将时间戳转换为日期表(`*t` 格式),分别得到 `dateA` 和 `dateB`。
  • 6. **日期比较**:检查 `dateA` 和 `dateB` 是否在同一天,即它们的 `day`、`month` 和 `year` 是否相同。如果相同则返回 `true`,否则返回 `false`。
--[[
    @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

相关推荐

  1. lua 实现 函数 判断时间是否同一天

    2024-07-22 14:02:01       18 阅读
  2. lua 写一个函数 判断时间是否同一周

    2024-07-22 14:02:01       19 阅读
  3. PHP 判断给定时间是否同一周,月,年

    2024-07-22 14:02:01       61 阅读
  4. 判断IP是否同一网段(SHELL实现)

    2024-07-22 14:02:01       40 阅读
  5. Rust 中 HashMap 是否相等的判断问题

    2024-07-22 14:02:01       34 阅读
  6. 【MySQL】巧用 DATE_SUB 函数判断时间是否连续

    2024-07-22 14:02:01       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 14:02:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 14:02:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 14:02:01       45 阅读
  4. Python语言-面向对象

    2024-07-22 14:02:01       55 阅读

热门阅读

  1. (四)js前端开发中设计模式之简单工厂模式

    2024-07-22 14:02:01       18 阅读
  2. HOW - CSS 定义颜色值

    2024-07-22 14:02:01       16 阅读
  3. Python @staticmethod、super().__init__()和self

    2024-07-22 14:02:01       18 阅读
  4. WHAT - 通过 shadcn 组件源码学习 React

    2024-07-22 14:02:01       14 阅读
  5. 探索 PHP 与 JD 详情 API 接口的连接奥秘

    2024-07-22 14:02:01       21 阅读
  6. 多个返回值QT/C++

    2024-07-22 14:02:01       17 阅读
  7. C# --- .Net Framework中的Binding Redirect

    2024-07-22 14:02:01       20 阅读