• 时区问题


    最近,游戏要上国外运营了,搞完就算告一段落了……放下种种不舍,搞好时区的问题,好好的送它一程吧

    受时区影响的问题主要分两类,一类是运营活动,一类是特殊玩法的开启。每天定时刷新的本来就有考虑时区,略过不表

    运营活动设计的时候已经考虑到时区,每个活动设计的时候,都需要填写活动开启的日期、时间及时区,这方面问题简化了很多。中间需要修改的,是偶尔有几个活动自作聪明,没有用库提供的日期计算函数,自己拿秒数来算。换上考虑时区的函数之后,就没有问题了。核心代码如下:

    local TD = TIMEZONE * 3600
    local SECONDS_PER_DAY = 24 * 3600
    function date.count_day(t1, t2, reset_time)
        if t1 > t2 then
            t1, t2 = t2, t1
        end
        t1 = t1 + TD - reset_time
        t2 = t2 + TD - reset_time
        local day1 = t1 // SECONDS_PER_DAY
        local day2 = t2 // SECONDS_PER_DAY
        return math.floor(day2 - day1)
    end

    其他特殊玩法设计的时候没有让策划考虑时区的配置,而是一刀切,一切按导表的时区来。策划填的年月日-时分秒,最后导出的是一个UTC的时间戳,这个是按导表时机器所在的时区来转换的。因为同一个打包环境,要打出国内外的包,所以稍微需要做点修改。这里有个讨巧的办法,lua没有API可以取出系统时区,但是os.date通过传递不同参数,可以获得UTC时间和本地时间。这样就可以间接得到打包机的时区,再加上到目标时区的偏移就行了,核心代码如下:

    function get_timezone()
      local a=os.time()
      local b=os.time(os.date("!*t"))
      return ((a-b)/3600)
    end
  • 相关阅读:
    Mysql8 连接提示 Client does not support authentication protocol requested by server; consider upgrading MySQL client 解决方法
    CMSampleBufferRef解析
    AVCaptureInput和AVCaptureOutput子类介绍
    六大设计原则
    UIView绘制原理,异步绘制
    使用Pods中使用Swift和Objective-C混编-编译不通过的原因
    SVN版本控制说明与相关指令
    KVO
    KVC
    Java从0到1的成长之路
  • 原文地址:https://www.cnblogs.com/Lifehacker/p/timezone_handling.html
Copyright © 2020-2023  润新知