3

我正在开发一项返回过期标头的服务。该服务将在不同的时区工作。所以我们需要一种方法来返回除 GMT 之外的其他时区。

我知道 http 标头必须遵循 RFC1123 标准日期格式。所以服务返回日期如下 -

格林威治标准时间 2019 年 3 月 1 日星期五 15:00:00

我需要的是以以下格式返回日期。

2019 年 3 月 1 日星期五 15:00:00 +0530

这是 RFC1123 日期格式的有效日期吗?

4

1 回答 1

7

我猜你正在使用的和过时的 RFC 2616作为参考。请记住,此类文件现在已不再相关,已被以下文件取代:


根据RFC 7231,HTTP 日期必须以 GMT 表示。因此,用 UTC 偏移量表示日期似乎无效。


查看RFC 7234Expires中如何定义标头:

5.3. 过期

Expires头字段给出了响应被认为是陈旧的日期/时间。[...]

Expires值是一个HTTP-date时间戳,如RFC 7231 的第 7.1.1.1 节中所定义。

 Expires = HTTP-date

例如

Expires: Thu, 01 Dec 1994 16:00:00 GMT

现在请参阅RFC 7231中的以下引用:

7.1.1.1。日期/时间格式

在 1995 年之前,服务器通常使用三种不同的格式来传达时间戳。为了与旧实现兼容,这里定义了所有三个。首选格式是 Internet 消息格式 [RFC5322] 使用的日期和时间规范的固定长度和单区域子集。

HTTP-date    = IMF-fixdate / obs-date

首选格式的示例是

Sun, 06 Nov 1994 08:49:37 GMT    ; IMF-fixdate

两种过时格式的示例是

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。[...]

于 2019-02-28T15:51:11.517 回答