在 CLI 上创建符合 RFC 1123 的 HTTP 标头日期

在 CLI 上创建符合 RFC 1123 的 HTTP 标头日期

我正在尝试使用标准 unix date(1) 创建符合 HTTP 1/1 的日期标头,以便使用 curl 或类似程序将其发布到 RESTful 服务器。

有什么想法需要将什么格式传递给 date(1) 才能使其符合 RFC 1123 标准吗?

非常感谢

答案1

man date对于您的操作系统提供的任何版本的日期,并使用正确的开关进行打印(参见man strftime),从左到右,每个之间有一个空格,首先是日期:

日(三个字母的缩写 Mon-Tue-Wed...)后跟逗号,
月(三个字母的缩写 Jan Feb Mar ...)
年份(4 位数字表示 1970, 1971 ...)
然后是时间 HH:MM:SS

你可能会得到类似Fri, 20 May 2016 20:22:33 GMT

答案2

env TZ=GMT; date '+%a, %d %b %Y %T %Z'

  1. %T相当于%H:%M:%S
  2. %Z被时区名称替换。

DATE=$(date -u +%a,\ %d\ %b\ %Y\ %H:%M:%S\ GMT)如果您系统的时区设置不是 GMT,那么@brad 的解决方案将不正确。例如:

env TZ=Asia/Taipei; date -u +%a,\ %d\ %b\ %Y\ %H:%M:%S\ GMT

%H:%M:%S将是 GMT+8,而输出是 GMT,但应该是 CST。

相关内容