1. 程式人生 > >lua比較兩個時間點,返回相差幾天

lua比較兩個時間點,返回相差幾天

-- 上一個時間
    local lastYear = os.date("%Y", 1490889600)
    local lastMonth = os.date("%m", 1490889600)
    local lastDay = os.date("%d", 1490889600)
    print("lastYear==="..lastYear)
    print("lastMonth==="..lastMonth)
    print("lastDay==="..lastDay)

    -- 當前時間
    local curYear = os.date("%Y", 1490976000)
    local curMonth = os.date("%m", 1490976000)
    local curDay = os.date("%d", 1490976000)
    print("curYear==="..curYear)
    print("curMonth==="..curMonth)
    print("curDay==="..curDay)

    --[[比較兩個時間,返回相差多少時間]]  
    function timediff(long_time,short_time)  
        local n_short_time,n_long_time,carry,diff = os.date('*t',short_time),os.date('*t',long_time),false,{}  
        local colMax = {60,60,24,os.date('*t',os.time{year=n_short_time.year,month=n_short_time.month+1,day=0}).day,12,0}  
        n_long_time.hour = n_long_time.hour - (n_long_time.isdst and 1 or 0) + (n_short_time.isdst and 1 or 0) -- handle dst  
        for i,v in ipairs({'sec','min','hour','day','month','year'}) do  
            diff[v] = n_long_time[v] - n_short_time[v] + (carry and -1 or 0)  
            carry = diff[v] < 0  
            if carry then  
                diff[v] = diff[v] + colMax[i]
            end  
        end  
        return diff  
    end  

      
    local n_long_time = os.date(os.time{year=curYear,month=curMonth,day=curDay,hour=0,min=0,sec=0});
    local n_short_time = os.date(os.time{year=lastYear,month=lastMonth,day=lastDay,hour=0,min=0,sec=0});
      
      
    local t_time = timediff(n_long_time,n_short_time);  
    local time_txt = string.format("%04d", t_time.year).."年"..string.format("%02d", t_time.month).."月"..string.format("%02d", t_time.day).."日   "..string.format("%02d", t_time.hour)..":"..string.format("%02d", t_time.min)..":"..string.format("%02d", t_time.sec);  
    print(time_txt);