从os.date()中减去小时数
2015-8-15 9:37:37
收藏:0
阅读:121
评论:4
我目前有这段代码
local day = os.date('%A')
local timesubtract = 8 --GMT -8 小时
local hour = os.date('%H')
local newtime = (day-timesubtract)
显然它不起作用。我已经在论坛上翻了3-4个小时的帖子,但没有找到解决方法
基本上,我需要调用特定时区的星期几。例如,今天是星期六,但在世界上的其他地方可能仍然是星期五,如果在“timesubtract”中设置了偏移量,它将为该时区调用正确的星期几。
点赞
用户5229743
function format_time(timestamp, format, tzoffset, tzname)
-- 如果tzoffset等于“local”,则计算本地时间区域(适用于服务器)
if tzoffset == "local" then
local now = os.time()
local local_t = os.date("*t", now)
local utc_t = os.date("!*t", now)
local delta = (local_t.hour - utc_t.hour)*60 + (local_t.min - utc_t.min)
local h, m = math.modf( delta / 60)
tzoffset = string.format("%+.4d", 100 * h + 60 * m)
end
tzoffset = tzoffset or "GMT-8" -- 设置默认时区为GMT-8
format = format:gsub("%%z", tzname or tzoffset)
if tzoffset == "GMT-8" then
tzoffset = "-0800"
end
tzoffset = tzoffset:gsub(":", "")
local sign = 1
if tzoffset:sub(1,1) == "-" then -- 如果是负数,则设为负号,去掉第一个字符
sign = -1
tzoffset = tzoffset:sub(2)
elseif tzoffset:sub(1,1) == "+" then -- 如果是正数,则去掉第一个字符
tzoffset = tzoffset:sub(2)
end
tzoffset = sign * (tonumber(tzoffset:sub(1,2))*60 + -- 将时区偏移量转换为秒数
tonumber(tzoffset:sub(3,4)))*60
return os.date(format, timestamp + tzoffset) -- 计算时间戳,并以设定格式返回
end
print (format_time(os.time(), "%A")) -- 显示星期几
所以,事实证明我对问题的考虑还不够全面。这段代码提供了我所需要的确切函数。
2015-08-15 09:03:39
用户5229743
另一种更短的方法
local offset = 8
function getServerDay()
local timeNow = os.date("*t")
timeNow.day = timeNow.day - 1
local timeYesterday = os.time(timeNow)
return tonumber(os.date("%H")) >= offset and os.date("%A") or os.date("%A", timeYesterday)
end
print(getServerDay())
2015-08-15 12:29:44
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
你可以使用 os.time 函数来获得时间的秒数(从某个过去的时间点开始),加上你的偏移(以秒为单位),再通过 os.date 将其格式化为字符串(或表格,无论你喜欢哪种形式)。
print(os.date("%c")) -- 打印当前时间 (08/15/15 10:45:55) local seconds_since_xxx = os.time() -- 获取当前时间的秒数 seconds_since_xxx = seconds_since_xxx - (60 * 60 * 11) -- 从时间中减去 11 小时 print(os.date("%c", seconds_since_xxx)) -- 打印计算后的时间 (08/14/15 23:45:55)