Lua 从os.date()中减去小时数

Lua 从os.date()中减去小时数,lua,Lua,我现在有这个代码 local day = os.date('%A') local timesubtract = 8 --GMT -8 hours local hour = os.date('%H') local newtime = (day-timesubtract) 显然它不起作用。在过去的3-4个小时里,我一直在筛选论坛上的帖子,但运气不好 基本上,我需要为一个特定的时区拨打一周中的某一天的电话。例如,今天是星期六,但在世界其他地方可能仍然是星期五,如果在“timesubtract”中设置

我现在有这个代码

local day = os.date('%A')
local timesubtract = 8 --GMT -8 hours
local hour = os.date('%H')
local newtime = (day-timesubtract)
显然它不起作用。在过去的3-4个小时里,我一直在筛选论坛上的帖子,但运气不好


基本上,我需要为一个特定的时区拨打一周中的某一天的电话。例如,今天是星期六,但在世界其他地方可能仍然是星期五,如果在“timesubtract”中设置了偏移量,它将调用该时区的一周中正确的一天。

您可以通过添加偏移量(以秒为单位)并将其格式化为字符串来获得以秒为单位的时间(或餐桌,随你的喜好而定)


原来我正在考虑一些事情。这段代码提供了我所需要的确切函数。

另一个更短的方法

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())

使用库,例如,它允许您跨不同的时区执行复杂的日期计算。

local hour=os.date(“!%H”)
这只会将一个小时延迟
function format_time(timestamp, format, tzoffset, tzname)
  if tzoffset == "local" then  -- calculate local time zone (for the server)
  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"
  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"))
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())