将 unix 时间转换为月数?

Convert unix time to month number?

使用 os.time 我如何获得自 unix 纪元(Unix 时间戳)以来已经过去了多少个月

我只需要一个月份ID,所以任何数字都可以,只要它每个月都变化,并且可以倒过来得到实际的月份。

这可能会奏效:

print (os.date("*t",os.time())["month"])

os.time() 以数字形式给出当前日期。 os.date("*t",...) 将其转换为 table,其中 month 等于与日期对应的月份数。

local function GetMonth(seconds)
    local dayduration,year = 3600*24
    local days={31,0,31,30,31,30,31,31,30,31,30,31}
    for i=1970,10000 do -- For some reason too lazy to use while
        local yeardays = i%4 == 0 and i%100 ~= 0 and 366 or 365
        local yearduration = dayduration * yeardays
        if yearduration < seconds then
            seconds = seconds - yearduration
        else
            year = i break
        end
    end
    days[2]=(year%4==0) and 29 or 28
    seconds = seconds%(365*24*3600)
    for i=1,12 do
        if seconds>days[i]*dayduration then
            seconds=seconds-days[i]*dayduration
        else
            return --i + year*12  <-- If you want a unique ID
        end
    end
end

目前,它会给出数字 2,因为现在是二月。如果您取消注释最后的唯一 ID 代码,您将得到 554,这意味着我们目前处于自纪元以来的第 554 个月。

正如 Jean-Baptiste Yunès 在其回答的评论中所说,我不确定您的句子是否:

NOTE: This is for Lua, but I'm unable to use os.date

表示您没有os.date,或者您不知道如何使用它。这两种情况你都有答案,你可以使用你需要的那个。