项目总结(游戏前端时间)
2017-02-10 10:46
211 查看
~~~~~~~~前端记录时间戳:
前后端的每一次数据交互中后端都会将当前的服务器时间戳同步给前端,前端来刷新时间戳的记录值。
但是数据交互只在有需要或者定期的前后端数据同步时才会有,那么在没有交互时前端是如何来控制时间戳的变化呢?
在前端的全局tick中执行下面计算:
当前时间戳 = 上一次数据交互中后端同步的服务器时间戳 +(当前设备的时间戳 - 交互同步时设备的时间戳)
从上面的公式可以看出每次有数据交互时需要记录下同步的时间戳和当时设备的时间戳。
不要拿当前的时间戳直接加上设备时间戳的变化值。因为当前的时间戳是用来显示的和逻辑判断的,如果在哪里不小心被修改了也很快会被修改回来。
~~~~~~~~时区问题:
各地服务器返回的时间戳都是固定的标准的,是格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
在不同地区的时间计算中同一个时间戳代表的时间是不一样的,例如:
1486697645 转化成北京时间是 2017/2/10 11:34:5
1486697645 转化成悉尼时间是 2017/2/10 14:34:5
因为北京时区是GMT+08:00,悉尼时区是GMT+11:00,其中GMT是世界标准时间。
os.date("*t",时间戳)返回的是一个标准世界时间。例如os.date("*t",1486697645)得到的是2017/2/10
3:34:5,再分别加上各自的时区才能得到当地的正确的时间。
所以在用到时间戳显示的地方都要进行时区的计算。
~~~~~~~~冬令时,夏令时问题:
这个项目中还未处理,个人觉得应该添加一个开关,到达时令季节就打开,前端根据开关做下特殊处理。目前没有想到别的更好的方法
前后端的每一次数据交互中后端都会将当前的服务器时间戳同步给前端,前端来刷新时间戳的记录值。
但是数据交互只在有需要或者定期的前后端数据同步时才会有,那么在没有交互时前端是如何来控制时间戳的变化呢?
在前端的全局tick中执行下面计算:
当前时间戳 = 上一次数据交互中后端同步的服务器时间戳 +(当前设备的时间戳 - 交互同步时设备的时间戳)
从上面的公式可以看出每次有数据交互时需要记录下同步的时间戳和当时设备的时间戳。
不要拿当前的时间戳直接加上设备时间戳的变化值。因为当前的时间戳是用来显示的和逻辑判断的,如果在哪里不小心被修改了也很快会被修改回来。
~~~~~~~~时区问题:
各地服务器返回的时间戳都是固定的标准的,是格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
在不同地区的时间计算中同一个时间戳代表的时间是不一样的,例如:
1486697645 转化成北京时间是 2017/2/10 11:34:5
1486697645 转化成悉尼时间是 2017/2/10 14:34:5
因为北京时区是GMT+08:00,悉尼时区是GMT+11:00,其中GMT是世界标准时间。
os.date("*t",时间戳)返回的是一个标准世界时间。例如os.date("*t",1486697645)得到的是2017/2/10
3:34:5,再分别加上各自的时区才能得到当地的正确的时间。
所以在用到时间戳显示的地方都要进行时区的计算。
~~~~~~~~冬令时,夏令时问题:
这个项目中还未处理,个人觉得应该添加一个开关,到达时令季节就打开,前端根据开关做下特殊处理。目前没有想到别的更好的方法
相关文章推荐
- 日程安排工具总是对的(梦幻时间日程)——项目经理应该小心的游戏之十
- 十年总结(六):一些只开花不结果的项目,给了我学习的时间
- 只言碎语总结,今后发展web前端,并分享两个项目难点解决方案。
- 第一个android游戏项目eyesight总结
- X-Ray 游戏项目总结与反思
- 新年到,总结一下一年来参与的手机游戏项目
- (5)前端AngularJS项目party_bid的第四部分总结
- win8 开发之旅(2) --连连看游戏开发 项目错误的总结
- 游戏项目开发总结
- (3)前端项目AngularJS的第三部分总结
- 十年总结(六):一些只开花不结果的项目,给了我学习的时间
- 近期项目总结之时间格式
- 项目时间管理总结
- web项目前端开发经验总结
- 项目时间管理总结及主要工作清单表
- 十年总结(六):一些只开花不结果的项目,给了我学习的时间
- 项目中遇见的问题总结:进制转换和时间转换
- flex 学习项目中总结的时间处理工具类DateUtils
- 关于游戏提名信息项目的总结
- 前端入坑出坑总结——为了更快的出入下一个坑(项目开发总结)