首页 > 解决方案 > nginx - 获取小时和工作日

问题描述

我需要将小时和工作日获取到要在配置文件中使用的变量中。

小时可以通过$time_iso8601使用正则表达式映射获得,但它是矫枉过正的(就像我说的:基于正则表达式)。

工作日我找不到任何解决方案(甚至不是一个糟糕的解决方案)。

有没有更好的解决方案来在 nginx 中实现这些?

标签: nginxtime

解决方案


我不会称其为矫枉过正,尤其是如果您有启用PCRE JIT的 nginx 构建(需要系统 PCRE 库的支持)。要获得工作日(以及一个小时),您可以将$date_gmt/中的$date_local变量与块ngx_http_ssi_module结合使用。map我没有找到使用自定义strftime()格式返回时间字符串的方法,似乎仅在后处理响应正文块中timefmt使用的 SSI 命令中支持提到的参数。<!-- ... -->您应该知道,//// 格式修饰符的结果可能strftime()取决于某些系统/nginx 构建的语言%a环境。你也可以检查这个%A%b%B%cSO线程,取决于您将如何使用这些值,它也可能对您有用。

我怀疑 vanilla nginx 是否有更好的解决方案,但如果您不仅限于内置模块,那么还有一个set-misc-nginx-module具有set_formatted_gmt_time/set_formatted_local_time指令的位置,您可以在其中指定确切的strftime()格式(%u/ %w/ %H)。这个模块也是OpenResty包的一部分。


推荐阅读