1、获取服务器所在时区 serverTimeZone = 时区*3600
2、获取自己的本地时区
lua中没有直接获取本地时区的api,可以通过os.date("!*t", os.time())获取格林尼治的时间,再以本地时区解析table获取时间戳,该时间戳与os.time()时间戳相减即为时区秒数差值

function GetLocalTimeZone()
    local now = os.time()
    local localTimeZone = os.difftime(now, os.time(os.date("!*t", now)))
    return localTimeZone
end
时区:GetLocalTimeZone()/3600

3、根据两个时区计算时间显示的偏移量,显示时间时都加上这个偏移量

local timeZoneOffset = ServerTimeZone - TimeUtils.GetLocalTimeZone()

4、lua中夏令时区的问题解决
lua中os.date()返回的table有个isdst字段,它是表示当前设备是否是夏令时区的字段,如果是夏令时间则需要把时间提前一小时,时间戳-3600然后转换时间即可。

例子:os.date("*t",time).isdst
最后修改:2022 年 01 月 13 日 09 : 23 AM
如果觉得我的文章对你有用,请随意赞赏