在 Tarantool
中获取时间的几种方法:
- 使用
clock
模块 - 使用
fiber.time
函数 - 使用
os.date
但是如何正确处理日期呢?
在 Tarantool
中获取时间的几种方法:
clock
模块fiber.time
函数os.date
但是如何正确处理日期呢?
首先,Unix纪元有几个常规方法:
os.time()
— 经典的Lua时间函数。速度较慢,效率不高。不建议在tarantool内部使用它来获取当前时代,但当然可以工作。可以用于获取任意日期(在本地时区内)的时代。例如:os.time({ year = 2020, month = 6, day = 4 })
将产生1591261200
,这是我的GMT+3时区中的12:00:00
clock.time()
(以及clock.time64()
)-高分辨率计时器,几乎是对clock_gettime
的原始绑定。可以从文档了解更多信息。fiber.time()
(以及fiber.time64()
)- clock.time的缓存版本。每次事件循环迭代都会更新。如果不需要时钟的绝对精度,则建议使用它。要将时代转换为不同格式和时区,有以下变体:
os.date("<format>" [, epoch ])
- 将纪元转换为本地时区。os.date("!<format>" [, epoch ])
(注意!
前缀)-将时代转换为GMT时区。os.date('*t')
获取本地时间,使用os.date('!*t')
获取UTC时间icu-date
。例如,如果您需要UTC时间,则可以使用缓存的fiber.time
和os.date
:
local fiber = require 'fiber'
os.date("!%Y-%m-%dT%H:%M:%SZ", fiber.time())
2020-06-04T11:48:54Z
的内容,不受时区影响。