http请求gmt时间_HTTP日期/时间格式

本文参照RFC 2616中,对日期时间格式的规范翻译

日期/时间 格式(参见RFC 2616)

3.3.1 Full Date

由于历史的原因,HTTP应用允许以下三种不同的格式来表示日期/时间戳:

Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123

Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036

Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format

第一种格式被常用来作为互联网的标准格式,展示一个定长的,由RFC 1123定义的日期时间的子集(在RFC 822 [9]中有更新)。

第二种格式也是常用的,但是是基于已经被废弃的RFC 850 [12] 日期格式,并且它缺少4位的年份表示。

HTTP/1.1客户端和服务器来转换日期值的时候必须接受所有的这三种格式(为了兼容HTTP/1.0),即使它们必须只能生成RFC 1123的格式来表示在header域中HTTP-date的值。

注意:日期值的接收者被鼓励在接受日期值的时候能够具备鲁棒性,因为这些值可能来自于非HTTP的应用,这些情况可能是通过代理/网关发送到SMTP或者NNTP的检索消息或者post消息。

所有的HTTP日期/时间戳必须是以格林威治标准时间展示(GMT),来避免异常。就HTTP的目的来讲,GMT是完全等价于UTC(协调世界时)的。这在前两种格式中有展示,通过包含“GMT”作为一个三个字母的表示时区的后缀,并且当读asctime格式的时候必须被假定。HTTP-date是大小写敏感的,并且必须不能包含额外的超出LWS(Linear White Space),尤其是在语法中包含SP(Space)。

HTTP-date = rfc1123-date | rfc850-date | asctime-date

rfc1123-date = wkday "," SP date1 SP time SP "GMT"

rfc850-date = weekday "," SP date2 SP time SP "GMT"

asctime-date = wkday SP date3 SP time SP 4DIGIT

date1 = 2DIGIT SP month SP 4DIGIT

; day month year (e.g., 02 Jun 1982)

date2 = 2DIGIT "-" month "-" 2DIGIT

; day-month-year (e.g., 02-Jun-82)

date3 = month SP ( 2DIGIT | ( SP 1DIGIT ))

; month day (e.g., Jun 2)

time = 2DIGIT ":" 2DIGIT ":" 2DIGIT

; 00:00:00 - 23:59:59

wkday = "Mon" | "Tue" | "Wed"

| "Thu" | "Fri" | "Sat" | "Sun"

weekday = "Monday" | "Tuesday" | "Wednesday"

| "Thursday" | "Friday" | "Saturday" | "Sunday"

month = "Jan" | "Feb" | "Mar" | "Apr"

| "May" | "Jun" | "Jul" | "Aug"

| "Sep" | "Oct" | "Nov" | "Dec"

注意:HTTP仅在它们用于协议流的时候需要使用日期/时间戳格式,客户端和服务器并不需要使用这些格式来用于用户展示、请求日志等。

3.3.2 Delta Seconds

一些HTTP header域允许一个具体的时间值作为一个表示秒的整数,以十进制表示当消息被接收以后的时间。

delta-seconds = 1*DIGIT

日期和时间规范(参见RFC 822)

5.1语法

date-time = [ day "," ] date time ; dd mm yy

; hh:mm:ss zzz

day = "Mon" / "Tue" / "Wed" / "Thu"

/ "Fri" / "Sat" / "Sun"

date = 1*2DIGIT month 2DIGIT ; day month year

; e.g. 20 Jun 82

month = "Jan" / "Feb" / "Mar" / "Apr"

/ "May" / "Jun" / "Jul" / "Aug"

/ "Sep" / "Oct" / "Nov" / "Dec"

time = hour zone ; ANSI and Military

hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT]

; 00:00:00 - 23:59:59

zone = "UT" / "GMT" ; Universal Time

; North American : UT

/ "EST" / "EDT" ; Eastern: - 5/ - 4

/ "CST" / "CDT" ; Central: - 6/ - 5

/ "MST" / "MDT" ; Mountain: - 7/ - 6

/ "PST" / "PDT" ; Pacific: - 8/ - 7

/ 1ALPHA ; Military: Z = UT;

; A:-1; (J not used)

; M:-12; N:+1; Y:+12

/ ( ("+" / "-") 4DIGIT ) ; Local differential

; hours+min. (HHMM)

5.2 语义

如果包含了日期,那么day-of-week必须是日期规范里暗示的那个day。

时区可能会被表示成多种形式。“UT”是Universal Time(正式称为 Greenwich Mean Time);“GTM”是被允许作为Universal Time的一个引用。军方标准为每一个时区使用一个单一的字符。“Z”是Universal Time。“A”表示早于1小时,“M”表示早于12小时;“N”表示晚于一个小时,“Y”表示晚于12小时。字符“J”没有被使用。其它剩下的两个格式来自于ANSI X3.51-1975标准。一个允许清楚地指示来自于UT的偏移量,另一个使用常见的3个字符的串来表示在北美的时区。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值