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