1、使用 os.time() 获取当前系统时间戳可以放心大胆的使用,不会出问题!
print("curTimeStamp->", os.time())
2、使用 os.time({timeTbl}) 获取指定日期的时间戳就需要注意了:
指定日期必须是在 1970-01-01 08:00:00 之后才能获取到时间戳,否则返回 nil 。
print(os.time({year = 1970, month = 1, day = 1, hour = 8, min = 0, sec = 0}))
-- 0
print(os.time({year = 2021, month = 6, day = 6}))
-- 1622952000
print(os.time({year = 1970, month = 1, day = 1, hour = 0, min = 0, sec = 0}))
-- nil
print(os.time({year = 1969, month = 1, day = 1}))
-- nil
所以,在获取指定日期的时间戳的时候,除非我们能确保指定日期是在 1970-01-01 08:00:00 之后,否则必须进行判空处理!
不然就容易出问题,例如对 nil 进行运算符操作:
local timeStamp = os.time({year = 1900, month = 8, day = 8})
local diffTimeStamp = os.time() - timeStamp
-- 报错:attempt to perform arithmetic on local 'timeStamp' (a nil value)