请教 openresty 关于时间计算的问题

750 views
Skip to first unread message

g_l...@qq.com

unread,
Nov 21, 2016, 8:17:27 AM11/21/16
to openresty
请教各位,不知道ngx 模块是怎么进行时间转换与计算的
比如:


outdate='2017-11-23 14:59'
if ngx.time() == outdate then <-- 这里需要怎么转换。才能判断没有找到方法
    执行操作
end

halfcrazy

unread,
Nov 21, 2016, 8:29:12 PM11/21/16
to openresty
ngx.time()获取的是时间戳
用lua的os.date函数格式化成字符串就可以了
os.date("%Y-%m-%d %H:%M", ngx.time())
ref https://www.lua.org/pil/22.1.html

在 2016年11月21日星期一 UTC+8下午9:17:27,g_l...@qq.com写道:

Zexuan Luo

unread,
Nov 21, 2016, 8:56:24 PM11/21/16
to openresty
如果想要判断时间格式字符串是否相等,用 ngx.localtime() 或者 ngx.utctime() 可以返回对应的 `yyyy-mm-dd hh:mm:ss` 格式的字符串。
如果是想比较两个时间的先后顺序,建议用 ngx.now() 返回表示epoch的浮点数,然后比较大小。
顺便一提,ngx.time() 的精度只到秒,有些场景下是不够用的。



在 2016年11月21日星期一 UTC+8下午9:17:27,g_l...@qq.com写道:
请教各位,不知道ngx 模块是怎么进行时间转换与计算的

g_l...@qq.com

unread,
Nov 22, 2016, 8:38:12 PM11/22/16
to openresty
谢谢你的回话,我希望能把 yyyy-mm-dd H:M:S 转换成 unix 时间 123456这种精确比较。可以吗?

在 2016年11月22日星期二 UTC+8上午9:56:24,Zexuan Luo写道:

g_l...@qq.com

unread,
Nov 22, 2016, 8:39:57 PM11/22/16
to openresty

谢谢你的回话,我希望能把 yyyy-mm-dd H:M:S 转换成 unix 时间 123456这种精确比较。可以吗?但是仅用 ngx 模块的

在 2016年11月22日星期二 UTC+8上午9:29:12,halfcrazy写道:

FQ Liu

unread,
Nov 22, 2016, 9:00:20 PM11/22/16
to openresty
yyyy-mm-dd H:M:S这种格式决定了你的时间精确度就在秒级了,转换成时间戳再比较一样的结果,而且ngx模块提供的是缓存的时间,不需要消耗计算资源。

当然如果确实需要用unix时间戳比较的话,可以用lua提供的os.time(), 如 os.time({ year=2016, month=11,day=22})会返回Number类型的时间的,不过精度没有区别,反而消耗更多,不是特殊需要的话不太推荐这么办。
ngx模块貌似没有这样的功能。

在 2016年11月23日星期三 UTC+8上午9:39:57,g_l...@qq.com写道:

g_l...@qq.com

unread,
Nov 24, 2016, 2:46:00 AM11/24/16
to openresty
谢谢你的回复。开来只有lua 才能转换成unix 时间了。

在 2016年11月23日星期三 UTC+8上午10:00:20,FQ Liu写道:
Reply all
Reply to author
Forward
0 new messages