有時(shí)候我們會(huì)有這樣的需求就是,從某個(gè)時(shí)刻到現(xiàn)在經(jīng)理了多少時(shí)間,這在lua里是有現(xiàn)成的函數(shù)的,名為os.difftime(),用來(lái)計(jì)算一個(gè)時(shí)間到另一個(gè)時(shí)間之差。
os.difftime
原型:os.difftime (t2, t1)
解釋:返回以秒計(jì)算的時(shí)刻t1到 t2 的差值。 在Windows,和其它一些系統(tǒng)中,這個(gè)值就等于 t2-t1。
個(gè)人覺(jué)得這個(gè)函數(shù)的局限性太大了,只能傳入秒數(shù),好像只做了一個(gè)差,那我自己做減法好不好;)
注意函數(shù)的定義計(jì)算的時(shí)刻t1到 t2 的差值,所以不要把參數(shù)搞反了,否則會(huì)返回負(fù)值的。
項(xiàng)目中遇見情況處理
local startDate = goodsConfig.startDate --開始時(shí)間
if startDate ~= nil then
local date = {
year = tonumber(string.sub(startDate, 1, 4)),
month = tonumber(string.sub(startDate, 5, 6)),
day = tonumber(string.sub(startDate, 7, 8)),
hour = 0,
min = 0,
sec = 0
}
local dif = os.difftime(os.time(), os.time(date))
dif = goodsConfig.duration - dif / 3600
if dif > 0 then
dif = math.floor(dif / 24) + 1
self.SuplusTime = dif --開始時(shí)間
else
self.IsDue = true
return
end
end
第2 網(wǎng)上一個(gè)例子
-- 奧運(yùn)會(huì)的時(shí)間
local tab = {year=2008, month=8, day=8, hour=20}
local pretime = os.time(tab)
print(os.date("08 Olympic Games time is %x", pretime))
-- 現(xiàn)在的時(shí)間
local timetable = os.date("*t");
local nowtime = os.time(timetable)
print(os.date("now time is %c", nowtime))
local difft = os.difftime(nowtime, pretime);
print("from 08 Olympic Games to now cost time "..difft.."s");