在時間這個問題上,lua提供兩大方法來供開發者使用,一個是os.time(),一個是os.date(),這兩大方法可以滿足日常開發的需求。
那麼我們如何準確運用這兩大方法呢。
在這一文章中我們先講os.time(),並通過一個簡單的例子來獲取到指定時間的秒數。
在開始這個例子之前,我們需要明白一些東西:
os.time() 得到是當前時間的距離1970.1.1.08:00時間的秒數,如果傳入的參數小於這個時間,那麼就會得到一個,秒數就是負數,會得到一個空值
如果沒有任何參數,就會返回當前時間。如果參數一個table,並且table的域必須有 year, month, day, 可有也可以沒有 hour, min, sec, isdst,則會返回table所代表日期的時間,如果未定義後幾項,默認時間爲當天正午(12:00:00)。 返回值是一個 number ,其值取決於你的系統。
local time=os.time() --返回當前時間
那麼顯而易見這個方法返回的是一個秒數。
local toTime=os.time({year =2016, month = 11, day =23, hour =17, min =17, sec = 00})
如果我們給os.time()傳入一個自定義時間的table,代碼如上所示,那麼我們也將得到那個時間的總秒數。
用未來時間減去當前時間,就能獲取到指定時間的秒數。
那麼我們就來完成這個例子
--獲取到第二日凌晨的剩餘時間 返回秒數
function GetReaminSecondsTo24()
local toYear=os.date("*t").year
local toMonth=os.date("*t").month
local toDay=os.date("*t").day
local toTime = os.time({year =toYear, month = toMonth, day =toDay, hour =23, min =59, sec = 59})
local time=os.time()
return toTime-time+1; --爲什麼+1?因爲我們返回的是當日23:59:59的秒數,如果是第二天凌晨的
--話就需要多加1
end