lua 写一个函数 判断两个时间戳是否在同一周

设计一个 函数 ,用于判断两个时间戳是否在同一周内
  • **参数**:
    • `stampA`:时间戳A。
    • `stampB`:时间戳B。
    • `resetInfo`(可选):重置时间信息,例如每天的12点重置。默认为`hour=0, min=0, sec=0`。
- **实现逻辑**:
    • 首先检查`stampA`和`stampB`是否为空,如果为空则返回`false`。
    • 将时间戳转换为整数。
    • 如果提供了`resetInfo`,则根据`resetInfo`中的小时、分钟和秒数调整时间戳。
    • 使用`getCurrentYearInfo`函数获取两个时间戳的年份和周索引。
    • 比较两个时间戳的年份和周索引,如果相同则返回`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:isSameWeek(stampA, stampB, resetInfo)
    if (not stampA) or (not stampB) then
        return false
    end
    stampA = TimeUtil:toInt(stampA)
    stampB = TimeUtil:toInt(stampB)
    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:getCurrentYearInfo(stampA)
    local dateB = TimeUtil:getCurrentYearInfo(stampB)
    return dateA.weekIdx == dateB.weekIdx and dateA.year == dateB.year
end

function TimeUtil:getCurrentYearInfo(time_s)
    time_s = time_s or TimeUtil:getServerTime()
    local yearNum = tonumber(TimeUtil:fixTimeZoneFor_LUA_OS_DATE("%y", time_s))  -- [0 - 99  两位数的年份]
    local weekIndex = tonumber(TimeUtil:fixTimeZoneFor_LUA_OS_DATE("%W", time_s))  -- [0 - 52   一年中第几个星期]
    return {
        year = yearNum,
        weekIdx = weekIndex,
    }
end
相关推荐
zh_xuan9 分钟前
LeeCode 57. 插入区间
c语言·开发语言·数据结构·算法
2401_8534482314 分钟前
C嘎嘎类里面的额函数
c语言·开发语言·c++
巷北夜未央25 分钟前
数据结构之二叉树Python版
开发语言·数据结构·python
旧识君1 小时前
移动端1px终极解决方案:Sass混合宏工程化实践
开发语言·前端·javascript·前端框架·less·sass·scss
郝YH是人间理想1 小时前
OpenCV基础——傅里叶变换、角点检测
开发语言·图像处理·人工智能·python·opencv·计算机视觉
Tiger Z1 小时前
R 语言科研绘图第 36 期 --- 饼状图-基础
开发语言·程序人生·r语言·贴图
揣晓丹1 小时前
JAVA实战开源项目:校园失物招领系统(Vue+SpringBoot) 附源码
java·开发语言·vue.js·spring boot·开源
霍徵琅2 小时前
Groovy语言的物联网
开发语言·后端·golang
独好紫罗兰2 小时前
洛谷题单3-P1420 最长连号-python-流程图重构
开发语言·python·算法
kingmax542120082 小时前
深入解析:使用Python爬取Bilibili视频
开发语言·python·音视频