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))

 

转载于:https://www.cnblogs.com/levenies/p/9216809.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值