lua 中关于时间戳和可读时间格式的一点记录

lua 标准库中提供了关于时间的函数os.time()和os.date(),这两个函数使用起来仍是有须要注意的地方的;这两个函数的结果都是加入了时区;好比我如今系统是GMT+8; os.time({year=1970, month=1, day=1, hour=0})计算出来的是-28800,也就是86060;计算的是当前table中给定的时间距离1970.1.1 08:00时间的秒数,因此就获得负数了;服务器

C标准库中,time()函数获得的时间戳其实也是加入了时区,也就是说无论你系统是那个时区,该函数返回的都是距离1970.1.1 00:00到当前的秒数;好比如今是GMT+8 00:00, 那么GMT+9 就是01:00,在这两个 时区同时调用time()函数,获得的值是同样的;函数

时区只会影响到咱们转换过来的可读样式,好比os.date()函数,os.date("*t", 0)的结果在不一样的时区hour字段的值会不同,世界标准时间以GMT+0为参照,北京时间以GMT+8为参照,中间有8个小时的差距;lua

写这个记录,主要是最近写了个游戏活动开启的功能, 服务器告诉客服端活动的开启和结束时间(时间戳),好比09:00- 12:00;而后客户端要转换成可读样式,这里就要考虑到时区了,由于os.date()是在本地计算的,若是没注意直接转换过去就会获得本地的时间显示出来;因此若是服务器给的是时间戳的话,这个还真得多注意下。之前写代码都好少涉及到本地转换可读格式的,此次遇到了记录下,算是方便增强下记忆……游戏

随便说下:os.date("*t", 0)获取到的table中hour字段是否能够当作当前时区呢?也就是说是否已经过该方式获取当前系统的时区;本身也不肯定,打个问号吧table

相关文章
相关标签/搜索