关于 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
评论