关于 openresty 中的时间使用

用户头像
lockdown56
关注
发布于: 2020 年 07 月 08 日
关于 openresty 中的时间使用

最近使用 openresty 开发项目,被时间相关操作绕进去了,感觉还是要好好整理下各个语言、框架关于日期、时间的相关操作,这里先整理下 openresty 相关的操作.

获取本地时间相关操作

  • ngx.today()

获取当前日期,格式为 yyyy-mm-dd

  • ngx.localtime()

获取当前时间戳,格式为 yyyy-mm-dd hh:mm:ss

获取 UTC 时间相关操作

  • ngx.time()

获取从 1970-01-01 00:00:00 到当前时间戳的秒数,注意是 UTC 时间,而不是东八区的北京时间

  • ngx.now()

获取从 1970-01-01 00:00:00 到当前时间戳的秒数,与 ngx.time 的不同是该值带小数,表示毫秒

  • ngx.utctime()

返回当前时间戳,格式为 yyyy-mm-dd hh:mm:ss, 注意是 UTC 时间

时间格式转换相关操作

  • ngx.cookie_time(sec)

返回格式化的时间,可以作为 cookie 的过期时间,参数 sec 为秒数,比如 ngx.time() 获取的秒数,格式举例:Thu, 18-Nov-10 11:27:35 GMT

  • ngx.http_time(sec)

返回格式化的时间,可以作为 http header 中传递的时间,参数 sec 为秒数,比如 ngx.time() 获取的秒数,格式举例:Thu, 18 Nov 2010 11:27:35 GMT

  • ngx.parse_http_time(str)

将 http 时间转换为秒数,如:

res = ngx.parse_http_time(Thu, 18 Nov 2010 11:27:35 GMT)

则 res 值为 1290079655

主动更新缓存时间

  • ngx.update_time()

上面所列的获取时间的方法都是获取的缓存时间。

lua-ngx 模块为了提高性能,会对时间进行缓存,通常在接收到事件之后才会更新缓存。

如果需要,可以手动调用 ngx.update_time() 刷新事件缓存

参考资料

lua-ngx-module:https://github.com/openresty/lua-nginx-module

openresty最佳实践:https://moonbingbing.gitbooks.io/openresty-best-practices/content/lua/build_env.html



用户头像

lockdown56

关注

还未添加个人签名 2017.12.09 加入

还未添加个人简介

评论

发布
暂无评论
关于 openresty 中的时间使用