PHP 中的 RFC1123 和 RFC2822 日期时间格式有啥区别?

Posted

技术标签:

【中文标题】PHP 中的 RFC1123 和 RFC2822 日期时间格式有啥区别?【英文标题】:What is the difference between RFC1123 and RFC2822 DateTime formatting in PHP?PHP 中的 RFC1123 和 RFC2822 日期时间格式有什么区别? 【发布时间】:2012-09-16 03:43:47 【问题描述】:

这是出于好奇,而不是因为我现在需要知道它,但在 php 手册中,它们是相同的;我看不出同一事物有两种不同数据格式的原因。

http://php.net/manual/en/class.datetime.php

const string RFC1123 = "D, d M Y H:i:s O" ;
const string RFC2822 = "D, d M Y H:i:s O" ;

有什么线索吗?

【问题讨论】:

【参考方案1】:

我认为原因是文档。日期格式可能相同,但它们在不同的文档中独立定义。说实话

const string COMMON_DATE_FORMAT_FOR_RFC1123_AND_2822 = "D, d M Y H:i:s O" ;

不会那么有用。

【讨论】:

【参考方案2】:

RFC1123 是“Internet 主机要求 - 应用程序和支持”,1989 年 10 月

RFC2822 是“Internet 消息格式”,2001 年 4 月

RFC1123 视为 RFC2822 的父级。它引用 RFC2822 作为日期/时间的适当规范,如下所示:

3.3。日期和时间规范

日期和时间出现在多个标题字段中。这个部分 指定完整日期和时间规范的语法。 尽管整个日期时间都允许折叠空白 规范,建议使用单个空格 FWS 出现的每个地方(无论是必需的还是可选的); 一些较旧的实现可能无法解释其他出现的 正确折叠空白。

date-time = [ day-of-week "," ] 日期 FWS 时间 [CFWS]

day-of-week = ([FWS] day-name) / obs-day-of-week

day-name = "Mon" / "Tue" / "Wed" / "Thu" / “周五”/“周六”/“周日”

日期 = 日月年

年 = 4*DIGIT / obs-年

month = (FWS 月份-名称 FWS) / obs-month

月份名称=“一月”/“二月”/“三月”/“四月”/ “五月”/“六月”/“七月”/“八月”/ “九月”/“十月”/“十一月”/“十二月”

day = ([FWS] 1*2DIGIT) / obs-day

时间 = 一天中的 FWS 区域

时间 = 小时 ":" 分钟 [ ":" 秒 ]

小时 = 2DIGIT / obs-小时

分钟 = 2DIGIT / obs-分钟

秒 = 2DIGIT / obs-秒

zone = (( "+" / "-" ) 4DIGIT) / obs-zone

【讨论】:

另外值得注意的是:RFC1123 参考了 RFC822。 RFC2822 淘汰了 RFC822。 谢谢两位,满足好奇心!

以上是关于PHP 中的 RFC1123 和 RFC2822 日期时间格式有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

符合RFC的电子邮件地址验证程序

如何从 python 中的 RFC 2822 邮件标头中提取多个电子邮件地址?

给定 [] 邮箱中的地址不符合 RFC 2822, 3.6.2。当电子邮件在变量中时

正则表达式根据 RFC2822 验证消息 ID

BigQuery 将 RFC 1123 日期格式字符串转换为 unixtime

如何使用 XSLT 2.0 获取当前日期时间的 RFC1123 日期格式