HTTP日期格式 格林威治时间GMT

GMT HTTP
0 931
suoniao 2020-11-04
需要:0索币

日期/时间 格式(参见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个字符的串来表示在北美的时区。



作者:JohnShen
链接:https://www.jianshu.com/p/e0dd536dd3e4
来源:简书
回帖
  • 消灭零回复
相关主题
HTTP日期格式 格林威治时间GMT 0
Wireshark抓包常用Web协议教程 0
QListWidget滚动的时候显示不完整 滚动条模式导致的哦 0
Qt设置顶层面板背景透明Qt::WA_TranslucentBackground 隐藏边框Qt::FramelessWindowHint 0
QMenu和QMenuBar样式表大全 qss 0
QT定时器startTimer和timerEvent事件 每隔interval 毫秒就会启动一次 0
C语言内存分配函数malloc和calloc的区别 0
QCheckBox的QSS样式表总结 0
Qt通过qRegisterMetaType注册自定义数据类型 0
QListwidget触发2次itemClicked事件 0
打印机USB驱动开发之实现打印服务器 0
Qt利用QLabel组件来显示图片 0
TableView自定义代理QStyledItemDelegate实现ComboBox 0
Qt利用QGraphicsView类实现图片放大缩小平移显示 0
Qt实现非阻塞延迟方法sleep 0
海康相机SDK的C++对应的接口 0
Qt实现webdav客户端功能支持https协议的webdav客户端 0
CHKDSK解决 移动硬盘只能看见盘符其它信息都看不见另外双击也打不开 0
gogs一直报errror:dial tcp xxx.xxx.xxx.xxx 宿主机的ip 0
索鸟快传2.1.2发布 0
相关主题
QListWidget滚动的时候显示不完整 滚动条模式导致的哦 0
Qt设置顶层面板背景透明Qt::WA_TranslucentBackground 隐藏边框Qt::FramelessWindowHint 0
QMenu和QMenuBar样式表大全 qss 0
QT定时器startTimer和timerEvent事件 每隔interval 毫秒就会启动一次 0
C语言内存分配函数malloc和calloc的区别 0
QCheckBox的QSS样式表总结 0
Qt通过qRegisterMetaType注册自定义数据类型 0
QListwidget触发2次itemClicked事件 0
打印机USB驱动开发之实现打印服务器 0
Qt利用QLabel组件来显示图片 0
TableView自定义代理QStyledItemDelegate实现ComboBox 0
Qt利用QGraphicsView类实现图片放大缩小平移显示 0
Qt实现非阻塞延迟方法sleep 0
海康相机SDK的C++对应的接口 0
Qt实现webdav客户端功能支持https协议的webdav客户端 0
CHKDSK解决 移动硬盘只能看见盘符其它信息都看不见另外双击也打不开 0
gogs一直报errror:dial tcp xxx.xxx.xxx.xxx 宿主机的ip 0
索鸟快传2.1.2发布 0
索鸟快传2.1.1发布 0
Qt操作windows注册表的方法 bat从注册表中将键值删除 0