lua星期计算

 

---美国习惯星期转中国习惯星期
function
TimeUtil.WdayToWdayCN(wday) if 1 == wday then return 7 else return wday - 1 end end

 

---美国习惯的星期加减, 1_周日, 2_周一 ...  7_周六
function TimeUtil.WdayAdd(wday, delta)
    local wday_2 = wday + delta
    if wday_2 < 1 then
        -- wday_2: 0_周六, -1_周五 ... -7_周六, -8_周五
        if wday_2 <= -7 then
            wday_2 = math.fmod(wday_2, 7) -- 备忘: math.fmod(-7, 7) = 0, math.fmod(-8, 7) = -1
        end
        wday_2 = wday_2 + 7 -- 1_周日, 2_周一 ... 7_周六
    elseif wday_2 > 7 then
        -- wday_2: 8_周日, 9_周一 ... 14_周六, 15_周日
        wday_2 = math.fmod(wday_2, 7) -- 备忘: math.fmod(14, 7) = 0, math.fmod(15, 7) = 1
        if 0 == wday_2 then
            wday_2 = 7 -- 7_周六
        end
    end
    return wday_2
end

---中国习惯的星期加减, 1-7表示周一到周日
function TimeUtil.WdayCNAdd(wdayCN, delta)
    local wdayCN_2 = wdayCN + delta
    if wdayCN_2 < 1 then
        -- wday_2: 0_周日, -1_周六 ... -6_周一, -7_周日, -8_周六
        if wdayCN_2 <= -7 then
            wdayCN_2 = math.fmod(wdayCN_2, 7) -- 备忘: math.fmod(-7, 7) = 0, math.fmod(-8, 7) = -1
        end
        wdayCN_2 = wdayCN_2 + 7 -- 
    elseif wdayCN_2 > 7 then
        -- wday_2: 8_周一, 9_周二 ... 13_周六, 14_周日, 15_周一
        wdayCN_2 = math.fmod(wdayCN_2, 7) -- 备忘: math.fmod(14, 7) = 0, math.fmod(15, 7) = 1
        if 0 == wdayCN_2 then
            wdayCN_2 = 7 -- 7_周日
        end
    end
    return wdayCN_2
end

 

---往后第1个周一还有几天, 0表示今天是周一
function TimeUtilT.GetFirstMondayLeftDays(wday)
    if 2 == wday then
        return 0
    end
    if 1 == wday then
        return 1
    else
        local days = 8 - wday
        return days
    end
end

---往后第1个周一还有几天, 0表示今天是周一
function TimeUtilT.GetFirstMondayCNLeftDays(wdayCN)
    if 1 == wdayCN then
        return 0
    end
    if 7 == wdayCN then
        return 1
    else
        local days = 8 - wdayCN
        return days
    end
end

 

posted @ 2025-08-30 19:06  yanghui01  阅读(2)  评论(0)    收藏  举报