当前位置: 首页 > web >正文

【功能】根据时区获取开服天数

海外版本中根据不同时区,获取开服天数

local LuaTimeMgr = class("LuaTimeMgr")local curServerTimeSecond   --通过心跳包获取的时间,单位是秒
local getOpenDayCD = 600    --获取服务器开放天数的CD,单位是秒--发送登录请求时,初始化
GLastGetOpenDayTime = 0function LuaTimeMgr:ctor()self.openDay = 0
end--上线后同步时间
function LuaTimeMgr:SyncServerTime(serverTime)curServerTimeSecond = serverTime / 1000     --单位是秒
end--本地Update更新函数
function LuaTimeMgr:Update()if curServerTimeSecond ~= nil thencurServerTimeSecond = curServerTimeSecond + Time.unscaledDeltaTimeend
end--[[格式化时间为 年-月-日 时:分:秒
@param serverTime 服务器时间,单位是秒
]]
function LuaTimeMgr:FormatToDateTime(serverTime)if serverTime == nil thenlocal clientZone = self:GetLocalTimeZone()local serverZone = self:GetServerTimeZone()local serverTimeSecond = self:GetTimeSecond()serverTime = serverTimeSecond + (clientZone - serverZone) * 3600endreturn os.date("%Y-%m-%d %H:%M:%S", serverTime) --根据本地时区转换
end--获取本地时区
function LuaTimeMgr:GetLocalTimeZone()local now = os.time()-- local localTime = os.date("*t", now)local utcTime = os.date("!*t", now)return os.difftime(now, os.time(utcTime)) / 3600
end--获取服务器时区
function LuaTimeMgr:GetServerTimeZone()return 8
end--获取服务器开服时间
function LuaTimeMgr:GetServerStartTime()return 0
end--获取服务器开服天数
function LuaTimeMgr:GetOpenServerDay()if GLastGetOpenDayTime ~= 0 and UnityEngine.Time.realtimeSinceStartup - GLastGetOpenDayTime < getOpenDayCD thenreturn self.openDayendGLastGetOpenDayTime = UnityEngine.Time.realtimeSinceStartuplocal serverStartTime = self:GetServerStartTime()local startTime = self:GetTimeStamp(serverStartTime / 1000, self:GetServerTimeZone())local endTime = self:GetTimeStamp(self:GetTimeSecond(), self:GetServerTimeZone())local day = math.floor(endTime - startTime) / 86400self.openDay = day + 1return self.openDay
endfunction LuaTimeMgr:GetTimeStamp(timeStamp, serverZone)local tempStamp = tonumber(tostring(timeStamp)) + serverZone * 3600local utcTime = os.date("!*t", tempStamp)local tempTime = os.time({ year = utcTime.year, month = utcTime.month, day = utcTime.day, hour = utcTime.hour, min = utcTime.min, sec = utcTime.sec })local baseTime = os.time({ year = utcTime.year, month = utcTime.month, day = utcTime.day, hour = 0, min = 0, sec = 0 })if tempTime >= baseTime thenreturn tempTimeelsereturn tempTime - 86400end
endfunction LuaTimeMgr:GetTimeSecond()return math.floor(curServerTimeSecond or 0)
endreturn LuaTimeMgr

UTC时间戳问题,可通用于跨时区计算开服天数

http://www.xdnf.cn/news/3317.html

相关文章:

  • 4:机器人目标识别无序抓取程序二次开发
  • 深度学习正则化:原理、方法与应用深度解析
  • 【Linux服务器安装杀毒软件】
  • 利用v0与Cursor优化开发流程和效率
  • Unity 粒子同步,FishNet
  • 高等数学-第七版-下册 选做记录 习题9-6
  • 2025年4月AI科技领域周报(4.21-4.27):大模型生态加速演进 通用AI开启产业融合新范式
  • Java批量数据处理唯一ID生成优化
  • 如何用AI生成假期旅行照?
  • CUDA编程 - 如何使用 CUDA 流在 GPU 设备上并发执行多个内核 - 如何应用到自己的项目中 - concurrentKernels
  • 希尔伯特第十问题:是一个伪命题
  • 【android bluetooth 案例分析 03】【PTS 测试 】【PBAP/PCE/SSM/BV-10-C】
  • 用.net动态创建类的实例指南方案
  • MoonBit支持国产芯片开发--性能媲美C
  • 从零开始学Python游戏编程47-二维数组1
  • 一种基于光源评估并加权平均的自动白平衡方法(一)
  • 系统分析师-第十五章
  • nacos和redis本地启动
  • 小米MiMo推理大模型开源:7B参数规模超越更大规模模型
  • flutter开发音乐APP(简单的音乐播放demo)
  • StarRocks存算一体集群资源预估
  • 国产工业软件突破路径
  • 【Spring AI】Java结合ollama实现大模型调用
  • Java对集合进行操作,赋值新字段
  • 微前端统一状态树实现方案
  • 傅里叶与相位偏移
  • Python实例题:Python实现简易局域网视频聊天工具
  • 日记 - 2025.4.30 四月计划回顾、五月计划安排
  • Python10天突击-字符串输出
  • 【NumPy完全指南】从基础操作到高性能计算实战