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

lua 写一个 不同时区之间转换日期和时间 函数

这个函数用于调整时间戳以适应不同的时区。它接受五个参数:`format`、`timeStamp`、`dontFixForTimeOffset`、`currentServerTimeZone`和`showLog`。返回  os.date,可以转化成指定格式的年月日时间

### 功能
该函数的主要功能是根据给定的时区偏移量调整时间戳,并返回格式化后的日期字符串。如果`dontFixForTimeOffset`为真或者时间戳小于31536001(即1970年1月1日之后的秒数),则直接返回原始时间戳的格式化日期。否则,它会根据当前服务器时区与本地时区之间的差异调整时间戳,并返回调整后的日期字符串。

### 参数
- `format`:日期格式字符串,用于指定返回日期字符串的格式。
- `timeStamp`:要调整的时间戳。如果未提供,则默认使用当前时间。
- `dontFixForTimeOffset`:布尔值,指示是否不调整时区偏移量。
- `currentServerTimeZone`:当前服务器的时区偏移量。如果未提供,则使用默认的`TimeUtil.timeZone`。
- `showLog`:布尔值,指示是否在日志中显示调试信息。

### 实现原理
1. **日志记录**:如果`showLog`为真,则记录时间戳和其类型。
2. **默认时间戳**:如果未提供时间戳,则使用当前时间。
3. **时区偏移量计算**:如果`dontFixForTimeOffset`为假且时间戳大于31536001,则计算当前服务器时区与本地时区之间的偏移量。
4. **时间戳格式判断**:判断时间戳是秒还是毫秒。如果是毫秒,则将其转换为秒。
5. **时区调整**:根据时区偏移量调整时间戳,并考虑夏令时的影响。
6. **格式化日期**:使用调整后的时间戳格式化日期字符串。
7. **日志记录**:如果`showLog`为真,则记录调整后的时间戳。
8. **返回结果**:返回格式化后的日期字符串。

### 注意事项
- 确保在调用此函数之前,`TimeUtil`对象已经正确初始化,并且`getTimeZone`方法能够返回正确的时区偏移量。
- `currentServerTimeZone`参数应该是一个整数,表示时区偏移量(例如,中国标准时间(CST)为+8小时,偏移量为8)。
- `timeStamp`参数可以是秒或毫秒,函数会自动进行转换。
- 如果`showLog`为真,则会在日志中输出调试信息,这可能会影响性能,建议在生产环境中关闭。


function TimeUtil:fixTimeZoneFor_LUA_OS_DATE(format, timeStamp,dontFixForTimeOffset, currentServerTimeZone, showLog)if showLog thenprint("[fixTimeZoneFor_LUA_OS_DATE] : %s-%s",timeStamp,type(timeStamp))endif timeStamp == nil thentimeStamp = os.time()endif dontFixForTimeOffset or timeStamp < 31536001 thenreturn os.date(format, timeStamp)else-- 8 hour * 3600 seconds = 28800 secondslocal timeZone = self:getTimeZone()if currentServerTimeZone == nil thencurrentServerTimeZone = TimeUtil.timeZoneendlocal timeZoneOffset = currentServerTimeZone - timeZonelocal isMilli = falseif timeStamp == nil thenisMilli = falseelsetimeStamp = math.ceil(timeStamp)-- 判定毫秒与秒local numberStr = tostring(math.ceil(timeStamp))if #numberStr <= 10 thenisMilli = falseelseif #numberStr == 13 thenisMilli = trueendendlocal eastEightTimeStampif isMilli == false theneastEightTimeStamp = timeStamp + (timeZoneOffset) * 3600 + (os.date("*t", timeStamp).isdst and -1 or 0) * 3600elseif isMilli thentimeStamp = math.ceil(tonumber(timeStamp) / 1000)eastEightTimeStamp = timeStamp + (timeZoneOffset) * 3600 + (os.date("*t", timeStamp).isdst and -1 or 0) * 3600elseLogger.print("[FixTimeZone Exception] Fatal timestamp format : %s", timeStamp)endif showLog thenLogger.print("[eastEightTimeStamp] : %s", eastEightTimeStamp)end--return timeStampreturn os.date(format, eastEightTimeStamp)endend

相关文章:

lua 写一个 不同时区之间转换日期和时间 函数

这个函数用于调整时间戳以适应不同的时区。它接受五个参数&#xff1a;format、timeStamp、dontFixForTimeOffset、currentServerTimeZone和showLog。返回 os.date&#xff0c;可以转化成指定格式的年月日时间 ### 功能 该函数的主要功能是根据给定的时区偏移量调整时间戳&am…...

谷粒商城——session共享

问题1 一个系统中不同微服务的session共享。 问题1的解决办法 1. session复制的方法&#xff1a;微服务的副本之间通过通信共享session。这样每一个微服务的副本都会保存所有的session。&#xff08;缺点&#xff1a;造成大量的通信&#xff0c;多处额外的通信开销。&#x…...

Java 语言及其常用集合类的操作,以及反射机制与注解

目录 一、Java 语言概述 二、Java 集合框架 ArrayList 操作示例&#xff1a; HashMap 操作示例&#xff1a; 三、反射机制 1. 反射的示例 五、总结 Java 是一种广泛使用的高级编程语言&#xff0c;因其平台独立性、简洁性及丰富的 API 而备受开发者青睐。 一、Java 语言…...

《系统架构设计师教程(第2版)》第12章-信息系统架构设计理论与实践-02-信息系统架构

文章目录 1. 概述1.1 信息系统架构&#xff08;ISA&#xff09;1.2 架构风格 2. 信息系统架构分类2.1 信息系统物理结构2.1.1 集中式结构2.1.2 分布式结构 2.2 信息系统的逻辑结构1&#xff09;横向综合2&#xff09;纵向综合3&#xff09;纵横综合 3. 信息系统架构的一般原理4…...

用html做python教程01

用html做python教程01 前言开肝构思实操额外修饰更换字体自适应 最后 前言 今天打开csdn的时候&#xff0c;看见csdn给我推荐了一个python技能书。 说实话&#xff0c;做得真不错。再看看我自己&#xff0c;有亿点差距&#x1f61f;。 开肝 先创建一个文件&#xff0c;后缀…...

PHP接口与性状的优雅应用

本文由 ChatMoney团队出品 在PHP编程中&#xff0c;接口是一种定义对象之间交互契约的强大工具。其核心目的不是让一个对象紧耦合地依赖另一个对象的特定身份&#xff0c;而是基于另一对象的能力进行交互。通过接口&#xff0c;我们的代码可以实现与依赖的解耦&#xff0c;从而…...

R语言模型评估网格搜索

### 网格搜索 ### install.packages("gbm") set.seed(1234) library(caret) library(gbm) fitControl <- trainControl(method = repeatedcv,number = 10,repeats = 5) # 设置网格搜索的参数池 gbmGrid <- expand.grid(interaction.depth = c(3,5,9),n.trees =…...

Haproxy服务

目录 一.haproxy介绍 1.主要特点和功能 2.haproxy 调度算法 3.haproxy 与nginx 和lvs的区别 二.安装 haproxy 服务 1. yum安装 2.第三方rpm 安装 3.编译安装haproxy 三.配置文件详解 1.官方地址配置文件官方帮助文档 2.HAProxy 的配置文件haproxy.cfg由两大部分组成&…...

Unity VR开发入门:探索虚拟现实世界的无限可能

目录 引言 Unity VR开发基础 1. 安装Unity与VR SDK 2. 创建VR项目 3. 理解VR场景结构 Unity VR开发实战 1. 场景搭建 2. 交互设计 创建C#脚本 编写VRInteractor脚本 应用脚本到场景 注意 修改VRInteractor脚本 3. 用户体验优化 4. 测试与调试 引言 随着科技的飞速…...

系统架构设计师教程(清华第二版) 第3章 信息系统基础知识-3.2 业务处理系统-解读

教材中,一会儿“业务处理系统”,一会儿“事务处理系统”,语法毛病一堆。真是清华的水平!!! 系统架构设计师教程 第3章 信息系统基础知识-3.2 业务处理系统 3.2.1 业务处理系统的概念3.2.2 业务处理系统的功能3.2.2.1 数据输入3.2.2.2 数据处理3.2.2.2.1 批处理 (Batch …...

32_ConvNeXt网络详解

1.1 简介 ConvNeXt是一种计算机视觉模型&#xff0c;由Meta AI&#xff08;前Facebook AI&#xff09;的研究人员在2022年提出&#xff0c;它旨在探索卷积神经网络&#xff08;CNN&#xff09;在图像识别任务上的潜力&#xff0c;尤其是在与当时流行的Vision Transformer&…...

Langchain[3]:Langchain架构演进与功能扩展:流式事件处理、事件过滤机制、回调传播策略及装饰器应用

Langchain[3]:Langchain架构演进与功能扩展&#xff1a;流式事件处理、事件过滤机制、回调传播策略及装饰器应用 1. Langchain的演变 v0.1: 初始版本&#xff0c;包含基本功能。 从0.1~0.2完成的特性&#xff1a; 通过事件流 API 提供更好的流式支持。标准化工具调用支持Tool…...

java导出PDF详细教程+各种踩坑

直接上代码了 所需依赖: <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.4.3</version> </dependency><dependency><groupId>com.itextpdf</groupId><art…...

【博士每天一篇文献-算法】连续学习算法之HNet:Continual learning with hypernetworks

阅读时间&#xff1a;2023-12-26 1 介绍 年份&#xff1a;2019 作者&#xff1a;Johannes von Oswald&#xff0c;Google Research&#xff1b;Christian Henning&#xff0c;EthonAI AG&#xff1b;Benjamin F. Grewe&#xff0c;苏黎世联邦理工学院神经信息学研究所 期刊&a…...

使用 tcpdump 进行网络流量捕获与分析

目录 安装 tcpdump基本用法捕获网络流量指定网络接口捕获特定主机的流量捕获特定端口的流量捕获特定协议的流量 常用选项保存捕获的数据包从文件读取数据包显示数据包内容指定捕获数据包的长度限制捕获的数据包数量显示详细信息过滤表达式 示例捕获本地回环接口上的HTTP流量捕获…...

k8s集群 安装配置 Prometheus+grafana

k8s集群 安装配置 Prometheusgrafana k8s环境如下&#xff1a;机器规划&#xff1a; node-exporter组件安装和配置安装node-exporter通过node-exporter采集数据显示192.168.40.180主机cpu的使用情况显示192.168.40.180主机负载使用情况 Prometheus server安装和配置创建sa账号&…...

【Java--数据结构】二叉树oj题(上)

前言 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 判断是否是相同的树 oj链接 要判断树是否一样&#xff0c;要满足3个条件 根的 结构 和 值 一样左子树的结构和值一样右子树的结构和值一样 所以就可以总结以下思路…...

微服务之间Feign调用

需使用的服务 FeignClient(name "rdss-back-service", fallback SysUserServiceFallback.class, configuration FeignConfiguration.class) public interface SysUserService {/*** 订单下单用户模糊查询*/GetMapping(value "/user/getOrderUserName")…...

【Qt】按钮的属性相关API

目录 一. QPushButton 二. QRadioButton 按钮组 三. QCheckBox Qt中按钮的继承体系如下图 QAbstractButton是一个抽象类&#xff0c;集成了按钮的核心属性和API 按钮说明QPushButton&#xff08;普通按钮&#xff09;最常见的按钮&#xff0c;用于触发操作或者事件。可以设…...

blender和3dmax和maya和c4d比较

Blender、3ds Max、Maya和Cinema 4D (C4D)都是强大的3D建模和动画软件&#xff0c;但它们各有特点和适用领域。以下是它们的比较&#xff1a; Blender: 开源免费全面的功能&#xff0c;包括建模、动画、渲染、视频编辑等学习曲线较陡峭&#xff0c;但社区支持强大适合独立艺术家…...

visio保存一部分图/emf图片打开很模糊/emf插入到word或ppt中很模糊

本文主要解决三个问题 visio保存一部分图 需求描述&#xff1a;在一个visio文件中画了很多个图&#xff0c;但我只想把其中一部分保存成某种图片格式&#xff0c;比如jpg emf png之类的&#xff0c;以便做后续的处理。 方法&#xff1a;超级容易。 选中希望保存的这部分图&…...

沙尘传输模拟教程(基于wrf-chem)

沙尘传输模拟教程(基于wrf-chem) 文章目录 沙尘传输模拟教程(基于wrf-chem)简介实验目的wrf-chem简介 软件准备wps、wrf-chem安装conda安装ncl安装ncap安装 数据准备气象数据准备下垫面数据准备 WPS数据预处理namelist.wps的设置geogrid.exe下垫面处理ungrib.exe气象数据预处理…...

使用 Python 进行测试(8)纯净测试

原文&#xff1a;Testing with Python (part 8): purity test 总结 如果你要使用综合测试&#xff08;integrated tests&#xff09;&#xff1a; def test_add_new_item_to_cart(product, cart):new_product Product.objects.create(nameNew Product, price15.00)new_cart…...

python的tkinter、socket库开发tcp的客户端和服务端

一、tcp通讯流程和开发步骤 1、tcp客户端和服务端通讯流程图 套接字是通讯的利器&#xff0c;连接时要经过三次握手建立连接&#xff0c;断开连接要经过四次挥手断开连接。 2、客户端开发流程 1&#xff09;创建客户端套接字 2&#xff09;和服务端器端套接字建立连接 3&#x…...

Python面试题:Python中的异步编程:详细讲解asyncio库的使用

Python 的异步编程是实现高效并发处理的一种方法&#xff0c;它使得程序能够在等待 I/O 操作时继续执行其他任务。在 Python 中&#xff0c;asyncio 库是实现异步编程的主要工具。asyncio 提供了一种机制来编写可以在单线程内并发执行的代码&#xff0c;适用于 I/O 密集型任务。…...

【信号频率估计】MVDR算法及MATLAB仿真

目录 一、MVDR算法1.1 简介1.2 原理1.3 特点1.3.1 优点1.3.2 缺点 二、算法应用实例2.1 信号的频率估计2.2 MATLAB仿真代码 三、参考文献 一、MVDR算法 1.1 简介 最小方差无失真响应&#xff08;Mininum Variance Distortionless Response&#xff0c;MVDR&#xff09;算法最…...

HarmonyOS NEXT零基础入门到实战-第二部分

HarmonyOS NEXT零基础入门到实战-第二部分 Swiper 轮播组件 Swiper是一个 容器 组件&#xff0c;当设置了多个子组件后&#xff0c;可以对这些 子组件 进行轮播显示。&#xff08;文字、图片...&#xff09; 1、Swiper基本语法 2、Swiper常见属性 3、Swiper样式自定义 4、案例&…...

《小程序02:云开发之增删改查》

一、前置操作 // 一定要用这个符号包含里面的${}才会生效 wx.showToast({title: 获取数据成功&#xff1a;${colorLista}, })1.1&#xff1a;初始化介绍 **1、获取数据库引用&#xff1a;**在开始使用数据库 API 进行增删改查操作之前&#xff0c;需要先获取数据库的引用 cons…...

SQL执行流程、SQL执行计划、SQL优化

select查询语句 select查询语句中join连接是如何工作的&#xff1f; 1、INNER JOIN 返回两个表中的匹配行。 2、LEFT JOIN 返回左表中的所有记录以及右表中的匹配记录。 3、RIGHT JOIN 返回右表中的所有记录以及左表中的匹配记录。 4、FULL OUTER JOIN 返回左侧或右侧表中有匹…...

【前端】JavaScript入门及实战41-45

文章目录 41 嵌套的for循环42 for循环嵌套练习(1)43 for循环嵌套练习(2)44 break和continue45 质数练习补充 41 嵌套的for循环 <!DOCTYPE html> <html> <head> <title></title> <meta charset "utf-8"> <script type"…...

wordpress所有缩略图/谷歌浏览器官网下载

基本概念 回归&#xff08;regression&#xff09;&#xff1a;回归&#xff0c;指研究一组随机变量 (Y1&#xff0c;Y2&#xff0c;…&#xff0c;Yi) 和另一组 (X1&#xff0c;X2&#xff0c;…&#xff0c;Xk) 变量之间关系的统计分析方法&#xff0c;又称多重回归分析。通常…...

wordpress浏览次数插件/软文营销文案

移动手机APP测试从零开始&#xff08;高级篇&#xff09; http://edu.csdn.net/course/detail/838 视频教程...

郑州 手机网站制作/合肥seo推广公司

总结一下,最近项目开发遇到的。由于缓存框架设计时&#xff0c;缓存请求文件时只以发起请求的url 为key,导致在客户端发起url 相同&#xff0c;传参类型不同的请求时&#xff0c;交替请求会出现&#xff0c;带上一次请求返回的etag &#xff0c;进行下次请求&#xff0c;服务器…...

做网站优化公司/关键词网站

Linux I2C程序框架通常包括以下几个部分: 包含I2C相关头文件:在程序中使用I2C功能时,需要包含Linux内核中的I2C相关头文件。通常包括"i2c-dev.h"和"i2c-io.h"。 打开I2C设备文件:使用Linux的"open()"函数打开I2C设备文件。I2C设备文件通常位…...

一个独立IP做几个网站比较合适/抖音的商业营销手段

前言 目前开发的SpringBoot项目在启动的时候需要预加载一些资源。而如何实现启动过程中执行代码&#xff0c;或启动成功后执行&#xff0c;是有很多种方式可以选择&#xff0c;java培训我们可以在static代码块中实现&#xff0c;也可以在构造方法里实现&#xff0c;也可以使用…...

多导航织梦网站模板下载/免费学生html网页制作成品

经过长达三年的研发&#xff0c;微软最新的并且是迄今为止最伟大的Windows Server操作系统已经发布了。在过去的几年中&#xff0c;Windows Server的前一代产品——Windows Server 2000/2003&#xff0c;都受到了用户的一致好评。无论大型企业用户还是中小型用户都对Windows Se…...