您的位置:首页 > Web前端

项目总结(游戏前端时间)

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,再分别加上各自的时区才能得到当地的正确的时间。

所以在用到时间戳显示的地方都要进行时区的计算。

~~~~~~~~冬令时,夏令时问题:

这个项目中还未处理,个人觉得应该添加一个开关,到达时令季节就打开,前端根据开关做下特殊处理。目前没有想到别的更好的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  游戏时间