Lua 使用 os.time 获取时间戳需谨慎

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fightsyj

您的鼓励将是我分享的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值