lua: 每周在特定的一天重置数据

在下面的代码中遇到一些问题。 它应该在用户设置的那一天每周重置一次,但它不会重置

有一个函数,每当用户重新加载或打开应用时都会调用 SC.WeekStart。

这两个值:

["options"]["dateweek"] = SC.WeekStart(); --返回该周的星期一 Aug

["options"].weekstart = 1  --由用户设置

检查该值的函数:

function SC.WeekStart()
   oneday = 86400;
   ct = time();
   dt = date("*t",ct);
   thisDay = dt["wday"];

while thisDay ~= ["options"].weekstart do
    ct = ct - oneday;
    dt = date("*t",ct);
    thisDay = dt["wday"];
  end
   cdate = date(nil,ct);
   return string.sub(cdate,0,8);`
end

检查是否为新的一周并重置

if ["options"]["dateweek"] ~= SC.WeekStart() then
    DEBUG_CHAT_FRAME:AddMessage("DEBUG: 找到新的一周!");
    for mode,value in next,SC.data do
        SC.data[mode]["Week"] = {In = 0, Out = 0};
    end
 end

有什么想法可以解决问题吗?是否有更好的方法进行处理?

点赞
用户4403144
用户4403144

有一种感觉是你正在做比你需要做的更多的事情。 这里有一个针对当前星期几的简单检查(在Lua os库中,星期天是1):

local userResetDay = 1
if os.date("*t").wday == userResetDay then
    print("重置!")
else
    print("不重置!享受你的一天!")
end

根据你的需求进行调整。

2018-08-23 01:59:07