lua 获取时间的 os.date时区问题 需要注意的
2016-06-30 19:33
357 查看
本文转载自http://my.oschina.net/u/146011/blog/358989
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个小时的差距;
写这个记录,主要是最近写了个游戏活动开启的功能, 服务器告诉客服端活动的开启和结束时间(时间戳),比如09:00- 12:00;然后客户端要转换成可读样式,这里就要考虑到时区了,因为os.date()是在本地计算的,如果没注意直接转换过去就会得到本地的时间显示出来;所以如果服务器给的是时间戳的话,这个还真得多注意下。以前写代码都好少涉及到本地转换可读格式的,这次遇到了记录下,算是方便加强下记忆……
随便说下:os.date("*t", 0)获取到的table中hour字段是否可以当做当前时区呢?也就是说是否已通过该方式获取当前系统的时区;自己也不确定,打个问号吧
获取时区
local ddd = tonumber(os.date("%z", 0))/100
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个小时的差距;
写这个记录,主要是最近写了个游戏活动开启的功能, 服务器告诉客服端活动的开启和结束时间(时间戳),比如09:00- 12:00;然后客户端要转换成可读样式,这里就要考虑到时区了,因为os.date()是在本地计算的,如果没注意直接转换过去就会得到本地的时间显示出来;所以如果服务器给的是时间戳的话,这个还真得多注意下。以前写代码都好少涉及到本地转换可读格式的,这次遇到了记录下,算是方便加强下记忆……
随便说下:os.date("*t", 0)获取到的table中hour字段是否可以当做当前时区呢?也就是说是否已通过该方式获取当前系统的时区;自己也不确定,打个问号吧
获取时区
local ddd = tonumber(os.date("%z", 0))/100
相关文章推荐
- 详解Lua中的表的概念及其相关操作方法
- Lua编程示例(二):面向对象、metatable对表进行扩展
- 把Lua编译进nginx步骤方法
- Lua脚本自动生成APK包
- Lua中的元表(metatable)、元方法(metamethod)详解
- Lua中的metatable介绍
- Lua中ipair和pair的区别
- Lua中的函数精讲笔记
- 浅谈Lua的面向对象特性
- 详解Lua中的变量相关知识点
- Lua脚本语言入门笔记
- Lua脚本调用外部脚本
- 详解Lua中的if语句的使用方法
- Lua中调用函数使用点号和冒号的区别
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中强大的元方法__index详解
- Lua中调用C++函数示例
- Lua面向对象之类和继承浅析
- Lua性能优化技巧(一):前言
- Lua中获取table长度问题探讨