lua os.time返回为nil的情况

os.time获取的是距离0时区1970年1月1日0时的秒数,即所谓的时间戳。

 os.time会考虑具体的时区差,因此这个方法的计算还得考虑具体的时区,目前发现2种可能出现为nil的情况:

1、在0时区的时候 os.time{year=1970, month=1, day=1, hour=0}执行结果为0,而在东八区的时候就返回nil了,因为当0时区0点的时候,其实东八区已经是8点了,所以要想执行结果为0,应写成os.time{year=1970, month=1, day=1, hour=8},而hour写成0肯定是8小,也就是执行结果小于0了。

2、夏令时问题,拿澳大利亚时区举例,澳大利亚夏令时从每年十月的第一个星期天夜间2点开始,全国都将时间拨快1小时,实行夏令时。至四月的第一个星期日结束。 2018年夏令时实施时间就是10.7号2点,也就是说在1:59分的时候,下一分钟会直接跳到3:00,因此对于实施夏令时的澳大利亚地区来说不存在10.7的2:00~2:59这个时间段,当把这个时间作为os.time参数时(os.time{year=2018, month=10, day=7, hour=2}),也是会返回nil.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值