美文网首页
HTTP日期/时间格式

HTTP日期/时间格式

作者: JohnShen | 来源:发表于2016-02-04 12:45 被阅读2462次

    本文参照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个字符的串来表示在北美的时区。

    相关文章

      网友评论

          本文标题:HTTP日期/时间格式

          本文链接:https://www.haomeiwen.com/subject/sfpekttx.html