在 Lua 中,函数 time、date 和 difftime 提供了所有的日期和时间功能。
在 OpenResty 的世界里,不推荐使用这里的标准时间函数,因为这些函数通常会引发不止一个昂贵的系统调用,同时无法为 LuaJIT JIT 编译,对性能造成较大影响。推荐使用 ngx_lua 模块提供的带缓存的时间接口,如 ngx.today
, ngx.time
, ngx.utctime
, ngx.localtime
, ngx.now
, ngx.http_time
,以及 ngx.cookie_time
等。
ngx.today():本地时间,格式是yyyy-mm-dd,不含时分秒
ngx.localtime():本地时间,格式是yyyy-mm-dd hh:mm:ss
ngx.utctime():UTC 时间,格式是yyyy-mm-dd hh:mm:ss
ngx.time():当前的时间戳,即epoch以来的秒数
ngx.now():类似ngx.time,但返回的是浮点数,精确到毫秒
ngx.http_time():把时间戳转换为http时间格式
ngx.cookie_time():把时间戳转换为cookie时间格式
ngx.parse_http_time():解析http 时间格式,转换为时间戳
获取今天截至的时间戳
local secs = ngx.time()+28800 -- 现在的时间戳加8小时
local str=ngx.http_time(secs)--Tue, 09 Jul 2019 15:59:59 GMT
local ma= string.sub(str,18,25)
str=ngx.re.gsub(str,ma,'23:59:59')--GMT今天截至的http time
local endTime = ngx.parse_http_time(str)-28800 --GMT8今天截至的时间戳