如果代码中没有做时区的兼容话,不同时区看到的游戏世界可能就不一样。
比如一个活动是设定中午12点开始,但是玩家的时区是在美国(反正和中国不一样),他的前端程序活动就无法正常开启,因为前端程序以为他正在夜晚(时间没到),其实已经在北京时间(东八区+8)。
为什么呢?首先弄清楚几个概念:
协调世界时 ,简称UTC 。 格林尼治台的时间 (英:Universal Time Coordinated ,法:Temps Universel Coordonné),又称世界统一时间,世界标准时间,国际协调时间。
时区(Time Zone)是地球上的区域使用同一个时间定义。1884年在 华盛顿 召开国际经度会议时,为了克服 时间 上的混乱,规定将全球划分为24个时区。
我国处于第八时区 所以北京时间是 UTC +8
UNIX时间,或称POSIX时间,是 UNIX 或 类UNIX 系统使用的时间表示方式:从协调世界时1970年1月1日0时0分0秒起的总秒数,不包括 闰秒 。
时间是怎么表示的?
大家所处的当下是有一个标准时间,即UTC。
东九区+9 ),中国(东八+8)。
如果UTC是零点。则这个时候中国是8点(0+8),日本是9点(0+9)。
如果我们一个网络活动是8点开启,在前端程序里面代码写死了8的话,日本的玩家可能无法正常,因为这个时候日本的电脑是九点。
解决办法。所有的时间都用UTC记录,服务端也同意用UTC记录,然后加权时区。
回到上面的活动,我们把程序里面的活动时间用UTC记录时间,即UTC-0点。在每个客户端中对比UTC时间,而不是加权了时区的本地时间。
的UTC也走到0点,也就是东京时间9点活动开启。2地时间可以同步了。
as3,示例
var d:Date = new
//计算了时区,+8
//没有加上时区 0
//以分钟为单位,返回计算机的本地时间和通用时间 (UTC) 之间的差值。
ps:有趣的是
2038年1月19日3时14分07秒,32位系统的UNIX时间将会被重置。