New*_*bee 3 datetime http datetimeoffset datetime-format rfc1123
我正在开发一项返回 expires 标头的服务。该服务将跨不同时区工作。所以我们需要一种方法来返回 GMT 以外的其他时区。
我知道 http 标头必须遵循 RFC1123 标准日期格式。所以服务返回日期如下 -
2019 年 3 月 1 日星期五 15:00:00 GMT
我需要的是以以下格式返回日期。
2019 年 3 月 1 日星期五 15:00:00 +0530
这是 RFC1123 日期格式的有效日期吗?
我猜您正在使用旧的和过时的 RFC 2616作为参考。请记住,此类文件如今已不再相关,并已替换为以下文件:
根据RFC 7231,HTTP 日期必须以 GMT 表示。因此,用 UTC 偏移量表示日期似乎无效。
查看如何Expires在RFC 7234 中定义标头:
的
Expires报头字段给出的日期/时间之后,响应被视为失效。[...]该
Expires值是一个HTTP-date时间戳,如RFC 7231 的第 7.1.1.1 节中所定义。Run Code Online (Sandbox Code Playgroud)Expires = HTTP-date例如
Run Code Online (Sandbox Code Playgroud)Expires: Thu, 01 Dec 1994 16:00:00 GMT
现在请参阅来自RFC 7231的以下引用:
在 1995 年之前,服务器通常使用三种不同的格式来传达时间戳。为了与旧实现兼容,这里定义了所有三个。首选格式是 Internet 消息格式 [RFC5322] 使用的日期和时间规范的固定长度和单区域子集。
Run Code Online (Sandbox Code Playgroud)HTTP-date = IMF-fixdate / obs-date首选格式的一个例子是
Run Code Online (Sandbox Code Playgroud)Sun, 06 Nov 1994 08:49:37 GMT ; IMF-fixdate两种过时格式的示例是
Run Code Online (Sandbox Code Playgroud)Sunday, 06-Nov-94 08:49:37 GMT ; obsolete RFC 850 format Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format解析 HTTP 头字段中时间戳值的接收者必须接受所有三种
HTTP-date格式。当发送方生成包含一个或多个定义为 的时间戳的标头字段时,HTTP-date发送方必须以该IMF-fixdate格式生成这些时间戳。HTTP-date 值将时间表示为协调世界时 (UTC) 的一个实例。前两种格式通过格林威治标准时间 GMT(UTC 名称的前身)的三个字母缩写表示 UTC;
asctime格式中的值假定为 UTC。[...]