【问题标题】:Lua Retrieving time in UTC returns local time anywayLua 以 UTC 检索时间无论如何都会返回本地时间
【发布时间】:2018-11-01 08:42:07
【问题描述】:

我在 Iguana(接口软件)中使用 Lua

我有位于 AEST 时区的服务器,我正在尝试像这样以 UTC 获取时间:

   trace(os.time(os.date('!*t'))) 
   trace(os.time(os.date('*t')))
   trace(os.time(os.date('!%c')))

这是我得到的输出:

它一直返回本地时间而不是 UTC。

我错过了什么吗?

服务器是 Windows Server 2012。

【问题讨论】:

  • os.date("!*t")os.date("*t") 返回的表是否包含相同的时间? print(os.date("!*t").hour, os.date("*t").hour) 的输出是什么?
  • @EgorSkriptunoff 是的,两个表是相同的。并且两者都包含相同的 .hour
  • 您的操作系统没有关于您的时区的正确信息(设置错误、没有与时间服务器同步等)。手动更正:os.time()-11*60*60

标签: time lua utc iguana-ui


【解决方案1】:

要获得 UTC 时间,请使用 !

os.date('!%c')

首先通过此代码检查您的时区

local now = os.time()
localtime_minus_UTC = os.difftime(os.time(os.date("*t", now)),
                                  os.time(os.date("!*t", now)))

【讨论】:

  • 这意味着你的时区是UTC
  • 如果是 UTC - 它不应该返回 os.time() 作为 09:49(现在)吗?相反,它返回 20:49
  • 现在 os.time local 和 UTC 在你的机器上是一样的
  • 在这种情况下:"os.date("!*t")" 应该返回 09:52(现在)?然而一切都在 20:52(+11 小时)返回
  • 如果时间设置 os.date('!%c') 应该返回 09:55 !
猜你喜欢
  • 2021-03-09
  • 2013-03-12
  • 1970-01-01
  • 2020-05-04
  • 2021-02-15
  • 2020-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多