游戏开发笔记:游戏海外版本时区问题(解释时区问题,分解为js写法和lua写法来分析记录,整理出对应语言的相关函数方法。)

news2024/11/17 21:27:46

请添加图片描述
对于海外游戏而言,与时间相关的功能,都不能忽略时区的计算。根据 ‘ 服务端资源是有限的,客户端资源是无穷无尽的 ’的定义来说,基本上时区包括时间的计算都是由客户端来进行计算,今天内容也是围绕客户端来展开。

  • 时区算法
    • 常见的时间描述
    • 时区需要计算的点
  • 在lua语言中的写法
    • os.time() 函数相关用法:
    • os.date() 函数相关用法:
      • 扩展用法
    • os.difftime() 函数相关用法:
    • 时间差算法
  • 在js语言中的写法
    • Date() 创建一个新的日期对象:
    • getTime() 获取日期对象的时间戳(毫秒数):
    • getFullYear(), getMonth(), getDate(), getHours(), getMinutes(), getSeconds() 获取日期的各个部分:
    • setTimeout() 在指定的毫秒数后执行一个函数:
    • setInterval() 每隔指定的毫秒数重复执行一个函数:
    • clearTimeout(), clearInterval() 取消setTimeout()和setInterval()设置的函数调用:
    • 时间差算法
      • 按照格林威治进行格式化,将当前时间转换为标准时间来计算时差
      • 判断是否为日光节约时间(夏令时)

时区算法

常见的时间描述

GMT(格林威治平均时间,Greenwich Mean Time)是指位于英国伦敦郊区的皇家格林尼治天文台当地的平太阳时,它规定太阳每天经过位于英国伦敦郊区的皇家格林威治天文台的时间为中午12点。由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治平时基于天文观测本身的缺陷,已经被原子钟报时的协调世界时(UTC)所取代。

UTC(协调世界时,取自英文和法文的缩写,英文是Coordinated Universal Time)是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林威治标准时间。

本地时间是指在日常生活中所使用的时间。这个时间等于我们所在(或者所使用)时区内的当地时间,它由与世界标准时间(UTC或GMT)之间的偏移量来定义。

GMT+08:00(UTC+8)即北京时间,比协调世界时快八小时。注意北京时间并不是北京的地方时间。

unix时间戳是从UTC1970年1月1日0时0分0秒(UTC/GMT的午夜)起至现在的总秒数,不考虑闰秒。因此时间戳不会因为时区的不同而不同。

夏令时(Daylight Saving Time:DST),又称日光节约时间,是为了节约能源,人为规定的时间。一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。

时间戳不受时区影响,或者说它只针对于UTC时间。对于同一时刻,不同时区的时间戳都是唯一的。

时区需要计算的点

1:将服务器时间转换为标准时间(即格林威治标准时间)
2:根据服务器的时间来判断当前是否存在夏令时(即日光节约时间)
3:用服务器时间减去时差加上夏令时为最终的时区差

在lua语言中的写法

在Lua中,可以使用os.time()函数获取当前时间戳;使用os.date()函数格式化时间;使用os.difftime()来计算时间差。
下面是对应用法:

os.time() 函数相关用法:

获取当前时间戳

local nowTime = os.time()
print(nowTime)  -- 输出当前时间戳(以秒为单位) 如此时1711519120

os.date() 函数相关用法:

可以输出固定格式的时间:

local titleTime = os.date("%Y-%m-%d %H:%M:%S", nowTime)
print(titleTime)  -- 输出2024-03-27 13:58:12

</

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1548345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我与电源2 我要升压

上一篇文章中讲到,我从LM7805 开始 接触电子设计,后来,随着对更高耐压,更高电流及功率的需求,不断的接触更先进的,效率更高,功率密度更大的电源方案,从线性稳压器到 DCDC 的Buck 电路。从最初 DCDC的异步开关模式转到使用同步开关模式。 这里要对线性稳压器再说一点。…

library cache lock模拟和处理

会话一&#xff1a; create or replace procedure dummy is begin null; end; /begin Dummy; Dbms_lock.sleep(1000); End; /会话二&#xff1a; SQL> alter procedure dummy compile; 卡住 会话三&#xff1a; SQL> alter procedure dummy compile; 卡住 处理过程…

计算机基础系列 —— CPU

“Make everything as simple as possible, but no simpler.” – Albert Einstein 文中提到的所有实现都可以参考&#xff1a;nand2tetris_sol&#xff0c;但是最好还是自己学习课程实现一遍&#xff0c;理解更深刻。 之前的文章里我们介绍了 Register、PC、RAM 和 ALU&#…

【蓝桥杯】tarjan算法

一.概述 Tarjan 算法是基于DFS的算法&#xff0c;用于求解图的连通性问题。 Tarjan 算法可以在线性时间内求出&#xff1a; 无向图&#xff1a; 割点与桥双连通分量 有向图&#xff1a; 强连通分量必经点与必经边 1.割点&#xff1a; 若从图中删除节点 x 以及所有与 x 关联的…

【学习】软件科技成果鉴定测试有何作用

软件科技成果鉴定测试是针对软件进行项目申报、科技成果鉴定等相关目的进行的测试。软件测试报告可作为项目申报、科技成果鉴定等工作的依据之一。软件类科技成果鉴定测试从软件文档、功能性、使用技术等方面对软件系统进行符合性测试。其测试结果证明软件的质量是否符合技术合…

机器学习笔记(2)—单变量线性回归

单变量线性回归 单变量线性回归(Linear Regression with One Variable)1.1 模型表示1.2 代价函数1.3 代价函数的直观理解1.4 梯度下降1.5 梯度下降的直观理解1.6 梯度下降的线性回归 单变量线性回归(Linear Regression with One Variable) ps:...今天很倒霉 一名小女孩悄悄地碎…

PTA金字塔游戏

幼儿园里真热闹&#xff0c;老师带着孩子们做一个名叫金字塔的游戏&#xff0c;游戏规则如下&#xff1a; 首先&#xff0c;老师把孩子们按身高从高到矮排列&#xff0c;选出最高的做队长&#xff0c;当金字塔的塔顶&#xff0c;之后在其余小朋友里选出两个最高的&#xff0c;…

JUC:打断正常线程、睡眠线程、park线程的interrupt状态、二阶段终止模式

文章目录 打断标记两阶段终止注意打断park线程 打断标记 睡眠中的线程被打断时&#xff0c;会抛出异常&#xff0c;把打断标记置为false&#xff0c;而不是变为true&#xff0c;wait和join也是。 打断 sleep&#xff0c;wait&#xff0c;join 的线程 这几个方法都会让线程进入…

如何使用Docker安装部署Cronsun?

前言 Cronsun是一款开源的分布式任务调度系统&#xff0c;主要用于在*nix服务器集群中管理和调度周期性任务。相比于传统的Linux crontab 工具&#xff0c;Cronsun提供了一个集中化的Web界面&#xff0c;使得在多台服务器上的定时任务更容易管理和监控&#xff0c;并且具备任务…

大话设计模式——8.原型模式(Prototype Pattern)

1.介绍 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象。属于创建型模式。 UML图&#xff1a; 1&#xff09;浅拷贝&#xff1a; 指创建一个新的对象&#xff0c;然后将原始对象的字段值复制到新对象中。如果字段是基本类型&#xff0c;直接复制…

MySQL高阶SQL语句

文章目录 MySQL高阶SQL语句MySQL常用查询1、按关键字排序1.1 语法1.2 ASC和DESC1.3 对数据表中信息进行排序1.3.1 普通排序1.3.2 结合where进行条件过滤1.3.3 对多个字段进行排序 2、区间判断及查询不重复记录2.1 and/or —— 且/或2.1.1 普通查询2.1.2 嵌套/多条件查询 2.2 di…

Java毕业设计-基于springboot开发的校园志愿者管理系统-毕业论文+答辩PPT(附源代码+演示视频)

文章目录 前言一、毕设成果演示&#xff08;源代码在文末&#xff09;二、毕设摘要展示1、开发说明2、需求分析3、系统功能结构 三、系统实现展示1、系统功能模块2、管理员功能3、志愿者功能 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开发的校园志愿者管理系统…

“AI程序员”Devin大杀四方后,人类程序员开始了他们的反击......

“首个AI程序员”Devin发布后&#xff0c;大有要替代人类程序员的意味。 在当时发布之初&#xff0c;Devin展示了AI自主处理各种程序任务的案例。其中Devin生成“生命游戏”的演示是最让我震惊的。 所谓“生命游戏”&#xff0c;是由英国数学家约翰何顿康威&#xff08;John …

CPU设计实战-外设接口介绍与测试

GPIO 内置寄存器&#xff0c;BASE地址由外设所在设备接口处决定&#xff0c;这样就可以确定每个寄存器的地址&#xff1b; 要使用输出先要使能&#xff0c;要用中断也先要使能&#xff1b; 测试实验-数码管驱动 数码管与GPIO的输出接口连接 编写汇编语言 1.使能输出端口 2…

游戏 AI 反作弊|基于时序行为数据的自瞄外挂检测方案,附方案详情!

游戏AI反作弊&#xff0c;上次跟大家分享了基于时序行为数据的透视外挂检测方案&#xff0c;本次跟大家分享 基于时序行为数据的自瞄外挂检测方案&#xff0c;大家记得点赞收藏&#xff01; 游戏 AI 反作弊|内附解决方案详情&#xff01;-CSDN博客 基于时序行为数据的自瞄外挂检…

【正点原子Linux连载】第二十二章 Linux INPUT子系统实验摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1&#xff09;实验平台&#xff1a;正点原子ATK-DLRK3568开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id731866264428 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/docs/boards/xiaoxitongban 第二十…

DNS协议 是什么?说说DNS 完整的查询过程?

一、是什么 DNS&#xff08;Domain Names System&#xff09;&#xff0c;域名系统&#xff0c;是互联网一项服务&#xff0c;是进行域名和与之相对应的 IP 地址进行转换的服务器 简单来讲&#xff0c;DNS相当于一个翻译官&#xff0c;负责将域名翻译成ip地址 IP 地址&#…

【数据分享】1929-2023年全球站点的逐日平均海平面压力(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全球气象站…

笔记本作为其他主机显示屏(HDMI采集器)

前言&#xff1a; 我打算打笔记本作为显示屏来用&#xff0c;连上工控机&#xff0c;这不是贼方便吗 操作&#xff1a; 一、必需品 HDMI采集器一个 可以去绿联买一个&#xff0c;便宜的就行&#xff0c;我的大概就长这样 win10下载 PotPlayer 软件 下载链接&#xff1a;h…

考了PMP证后工资大概是多少 ?

PMP自1999年引入国内以来&#xff0c;大家对这个证书的了解并不深&#xff0c;每年考试的人数也不多。但随着越来越多的企业认可PMP认证&#xff0c;目前考证的人数不断增加&#xff0c;几乎所有与项目管理相关的人都知道这个证书的重要性。这个证书在招聘要求中出现频率较高&a…