• 时区问题


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

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

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

    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
  • 相关阅读:
    将 Shiro 作为应用的权限基础
    CMD命令名详细大全
    使用jquery模拟请求,测试项目是否存在跨域限制
    springboot 2.1.4 源码默认logback-spring.xml
    IDEA 代码风格设置
    springboot 实现配置文件给常量赋值
    IDEA Can't Update No tracked branch configured for branch master or the branch doesn't exist.
    @EnableFeignClients 注解
    springboot 定时任务
    SpringCloud 学习网址记录
  • 原文地址:https://www.cnblogs.com/Lifehacker/p/timezone_handling.html
Copyright © 2020-2023  润新知