lua中夏令时区的问题解决
Posted levenies
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua中夏令时区的问题解决相关的知识,希望对你有一定的参考价值。
游戏中会遇到时区的问题
比如北京时间晚上8点开启一个活动,此时此刻在世界各地都应该可以参加
这个时候我们计算时间应该按照服务器的时间计算。
所以一般做法是
服务器发给客户端一个server_timestamp ,时间戳的意思是从1970年1月1日零时到现在的时间总秒数
在lua中我们会转化成日期,比如: local date = os.date("*t",server_timestamp)
这样算正常来说没什么问题
但是很多国家地区采用了夏令时计时,北京时区是非夏令时区
导致了os.date("*t",server_timestamp)算出的时间 多了一个小时
lua中os.date()返回的table有个isdst字段 它是表示当前设备是否是夏令时区的字段
那么我们只要判断当前是夏令时区,拿到时间戳的时候 减去一个小时是3600s
再去计算时间,就不会有错误,如下
local date = os.date("*t",server_timestamp + (isdst and -3600 or 0))
以上是关于lua中夏令时区的问题解决的主要内容,如果未能解决你的问题,请参考以下文章