自分が何日生きたかを計算する関数です

916 ワード

今日はネタがあったので、ふと自分が何日生きているのか見たいです.これはluaで実現するのは超簡単です
function day_diff(o)
    local daydiff = 0
    local n = os.date("*t")
    while 1 do
        if o.year == n.year and o.month == n.month and o.day == n.day then break end
        o.day = o.day + 1    --      ,     1 31 ,    1 32 
        o = os.date("*t", os.time(o)) --                  ,    2 1 
        daydiff = daydiff +1
    end
    return daydiff end
end

local o = {year = 2012, month = 12, day = 21}
print(day_diff(o))    ---->573
 
  
 
  
 
  

可以顺便计算一下,自己要活满30000天,是哪一天:

local d = {year = 2012, month = 12, day = 30021}
print(os.date("%c", os.time(d)))

しかし、このような長いスパンは、windows(私のwin 7、64 bit)で超えたosです.timeの時間範囲は計算できません.linux(CentOS 6.3)
)で計算できます.具体的な原因はlua 5.2のドキュメントには異なるプラットフォームの特性が記載されています