从unix时间戳获取数小时

时间:2012-12-21 21:21:57

标签: lua timestamp

如何从linux时间戳中获取当前小时数?我可以得到年,月,日,分和秒,但不是小时。有什么帮助吗?

当前代码:

local secondsPassed = os ~= nil and os.time() or tick()
local year = 1970 + math.floor(secondsPassed / (86400 * 365.25))
local days = math.floor((secondsPassed % (365.25 * 86400)) / 86400)
days = days + (year - 2011)
local minutes = math.floor((secondsPassed % 3600) / 60)
local seconds = math.floor(secondsPassed % 60)

断裂:

local hours = math.floor((secondsPassed % 86400) / 3600)-- +1

2 个答案:

答案 0 :(得分:4)

这里有几个问题:

  • UNIX时间相对于格林威治标准时间1970-01-01午夜。如果您不在GMT,您将看到一个取决于您的时区的偏移量。如果您的地区遵守夏令时,则此偏移量将根据日期以可能相当复杂的方式而变化。

  • 年数不是365.25天。根据年份,它们是365天或366天。 (这甚至没有达到365.25的平均值;由于特殊情况可以被100和400整除,它平均为365.2425。)

除非有某些原因你不能使用Lua date and time modules,否则我强烈建议你这样做,而不是试图自己重新创建它们。

答案 1 :(得分:0)

你非常接近。我到目前为止的时间是正确的:

当地时间= math.floor((secondsPassed%86400)/ 1440)+ 1