OpenResty内置的时间函数

OpenRestyLua大约 1568 字

方法说明

Lua中的timedatadifftime函数提供了所有日期和时间的功能,但在OpenResty中不推荐使用,因其会引发昂贵的系统调用,无法为LuaJIT JIT编译。

文档地址:https://github.com/openresty/lua-nginx-module#ngxtoday

常用方法

str = ngx.today()

本地时间,返回yyyy-mm-dd格式,来源于Nginx缓存的时间(不像Lua日期库一样产生系统调用)。

secs = ngx.time()

返回当前时间戳,来源于Nginx缓存的时间(不像Lua日期库一样产生系统调用)。

secs = ngx.now()

返回一个时间戳浮点数,小数部分是毫秒值。

str = ngx.localtime()

本地时间,返回yyyy-mm-dd hh:mm:ss

str = ngx.utctime()

UTC时间,返回yyyy-mm-dd hh:mm:ss

str = ngx.cookie_time(sec)

可用作Cookie过期时间,参数sec是时间戳(秒级别)。

str = ngx.http_time(sec)

可用作httpheader时间,类似(Last-Modified头),参数sec是时间戳(秒级别)。

sec = ngx.parse_http_time(str)

解析类似Last-Modified中的字符串为时间戳(秒级别)。

ngx.update_time()

强制刷新Nginx的缓存时间,此方法会产生系统调用,禁止滥用。

代码示例

ngx.say("ngx.today#" .. ngx.today() .. "<br>")
ngx.say("ngx.time#" .. ngx.time() .. "<br>")
ngx.say("ngx.now#" .. ngx.now() .. "<br>")
ngx.say("ngx.localtime#" .. ngx.localtime() .. "<br>")
ngx.say("ngx.utctime#" .. ngx.utctime() .. "<br>")
ngx.say("ngx.cookie_time#" .. ngx.cookie_time(1583484791) .. "<br>")
ngx.say("ngx.http_time#" .. ngx.http_time(1583484791) .. "<br>")
ngx.say("ngx.parse_http_time#" .. ngx.parse_http_time("Fri, 06 Mar 2020 08:53:11 GMT") .. "<br>")
--ngx.say("ngx.update_time#" .. ngx.update_time() .. "<br>")

返回

ngx.today#2020-03-06
ngx.time#1583485303
ngx.now#1583485303.969
ngx.localtime#2020-03-06 17:01:43
ngx.utctime#2020-03-06 09:01:43
ngx.cookie_time#Fri, 06-Mar-20 08:53:11 GMT
ngx.http_time#Fri, 06 Mar 2020 08:53:11 GMT
ngx.parse_http_time#1290079655

开源案例

https://github.com/fendoudebb/z-blog-openresty

阅读 598 · 发布于 2020-03-06

————        END        ————

扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看换一批