有时候我们会有这样的需求就是,从某个时刻到现在经理了多少时间,这在lua里是有现成的函数的,名为os.difftime(),用来计算一个时间到另一个时间之差。
os.difftime
原型:os.difftime (t2, t1)
解释:返回以秒计算的时刻t1到 t2 的差值。 在Windows,和其它一些系统中,这个值就等于 t2-t1。
个人觉得这个函数的局限性太大了,只能传入秒数,好像只做了一个差,那我自己做减法好不好;)
注意函数的定义计算的时刻t1到 t2 的差值,所以不要把参数搞反了,否则会返回负值的。
项目中遇见情况处理
local startDate = goodsConfig.startDate --开始时间
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 --开始时间
else
self.IsDue = true
return
end
end
第2 网上一个例子
-- 奥运会的时间
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))
-- 现在的时间
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");