我正在尝试使用标准 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'
%T
相当于%H:%M:%S
。%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。