1、多种日期时间格式
以下的日历表大家应该最熟悉不过了,我们经常在网络上查询日期,大多是如下格式显示的。

其中有两种日期格式
阳历:2020-1-17 10:48 农历:二零一九年腊月二十三
虽然阳历接近于国际化的格式,农历则是我们本土化的(localization,一些编程语言里包命名的时候经常携程I10n,为了方便书写)的习惯。
外国人需要思维转换一下才能看懂这个日期。
触类旁通:还有一些日期,受宗教及本土文化影响,偏本土化的,大家看起来比较费力,这在沟通上也不方便,例如泰历,日本历法,台湾省历法。
1、1泰历
在佛历2412年,泰国拉玛五世皇曾定4月1日为元旦日,后来直到西历1940年12月24日,多国与泰国政府协商,经慎重考虑以后,由当时的国务院长宣布,
从1941年起,改定西历1月1日为元旦日,并一直沿用至今。
1、1、1佛历换算公式:
佛历年-543年=公历年
公历年+543年=佛历
转载自:https://new.qq.com/rain/a/20191104A006G2
1、2日本历法
日本历是日本使用的历法,以前日本一直使用中国农历。使用中国的元嘉历、麟德历(在日本叫做仪凤历)、大衍历、五纪历、宣明历。之后,使用日本独自
作的贞享历、宝历历、宽政历、天保历。1868年明治维新后,于1873年废除天保历,改为使用格里历,废除旧历新年,但民间占卜、算命和春分上坟仍依照天保历。
1、2、1年号纪年
1、2、2节句
1、2、3杂节
1、3台湾省历法
台湾使用民国纪年,台湾时间日期计法有
西元年份减1911=民国纪年
西元纪年也会一并使用
公文使用国历
一般民间信仰会参考农民历做为行事依据
比如说民国70年,对应的西元时间是1981年
台历与各国、朝代计算方法:http://sinocal.sinica.edu.tw/

转载自:https://zhidao.baidu.com/question/114547201.html
http://www.newsmth.net/nForum/#!article/Taiwan/49226
下面我们就来了解一下日期时间相关的规范和标准
2、RFC822
RFC822: Standard for ARPA Internet Text Messages(ARPA 互联网文本消息的标准),即电子邮件信息标准,主要是用于电子邮件格式的报文。
它包括两个主要的组成部分:邮件头和邮件体,以下是一段标准的报文:
例程1 test.eml
Return-Path: <it315_test@sina.com> Delivered-To: it315_test@mx72.mail.sohu.com Received: from smtp.sina.com.cn (unknown [202.108.3.177]) by sohumx139.sohu.com (Postfix) with SMTP id E4F9802C1249 for <it315_test@sohu.com>; Thu, 10 Nov 2005 16:39:50 +0800 (CST) Received: (qmail 49221 invoked from network); 10 Nov 2005 08:39: 33 -0000 Received: from unknown (HELO it315?test) (218.246.5.151) by smtp.sina.com.cn with SMTP; 10 Nov 2005 08:39:33 -0000 From: it315_test@sina.com To: it315_test@sohu.com subject:test Message-Id: <20051110083950.E4F9802C1249@sohumx139.sohu.com> Date: Thu, 10 Nov 2005 16:39:50 +0800 (CST) Status: RO X-UIDL: 1131611863.21509_77.mx72 test!!!
以上转载自:https://www.cnblogs.com/liuzhiyun/p/9808957.html
如果使用Wireshark等工具抓过STMP包的朋友应该能比较熟悉这段报文(本篇文章不讲究邮件报文,主要讲日期时间)。
上面有好几段英文日期时间格式,对于英文一般或者不懂的朋友看起来费劲。
以下是不同语言处理RFC822日期时间的一些文章(有本人整理、翻译、摘录):
2、1 协议相关标准
2、1、1 语法:
日期时间 = [ 天 "," ] 日期 时间 ; dd mm yy (笔者注:天为可选,可以不输入) ; hh:mm:ss zzz 天 = "Mon" / "Tue" / "Wed" / "Thu" / "Fri" / "Sat" / "Sun" 日期 = 2位数字 英文单词简写月 2个数字 ; 天 月 年 ; 例如: 20 Jun 82 月 = "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" / "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec" 时间 = 小时 时区 ; ANSI及军方标准 小时 = 2位数字 ":" 2位数字 [":" 2位数字] ; (笔者注:秒为可选,可以不输入) ; 00:00:00 - 23:59:59 时区 = "UT" / "GMT" ; 世界时间 ; 北美时间 : UT / "EST" / "EDT" ; 东部时间: - 5 / - 4 / "CST" / "CDT" ; 中部时间: - 6 / - 5 / "MST" / "MDT" ; 山地时间: - 7/ - 6 / "PST" / "PDT" ; 太平洋时间: - 8/ - 7 / 1ALPHA ; 军方时间: Z = UT; ; A:-1; (J暂未使用) ; M:-12; N:+1; Y:+12 / ( ("+" / "-") 4位数字) ; 表示具有时间的相对差异(笔者注:时区偏移) ; hours+min. (HHMM)
如果包括,则星期数必须是日期规范所隐含的日期。
时区可能以多种方式表示。"UT"是通用时间(以前称为"格林威治平均时间");
"GMT"允许作为世界时间的参考。军事标准对每个区域使用单个字符。
"Z"是通用时间。"A"表示提前一小时,"M"表示提前 12 小时;"N"是一小时后,而"Y"是 12 小时后。
不使用字母"J"。其余两种形式取自ANSI标准X3.51-1975。一个允许显式指示从 UT 的偏移量;
另一个使用常见的 3 字符字符串来指示北美的时区。
局限于笔者的英文能力,大家可以到https://www.w3.org/Protocols/rfc822/#z28了解详情。
2、1、2 MSDN:RFC 822: Date and Time Specification
本节定义了 RFC 822 消息中使用的日期和时间的语法和语义。例如,枚举一周中的天和一年中的几个月,
时间定义为:
time = hour zone ; ANSI and Military hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT] ; 00:00:00 - 23:59:59
时区格式:
zone = "UT" / "GMT" / "EST" / "EDT"
2、2 相关文章
Convert a date to the RFC822 standard for use in RSS feeds(在RSS源中间日期转换成RFC822标准使用)
RFC850
格式:星期几 "," 2位数天-英文月份简写-2位数年 time "GMT"
示例数据:Tue, 03-Jul-12 04:40:59 GMT
RFC1036
格式:EEEEEEEEE, dd-MMM-yy HH:mm:ss z
示例数据:Sunday, 06-Nov-94 08:49:37 GMT
参考:https://blog.csdn.net/lvzhuyiyi/article/details/51770148
RFC1123
该协议日期时间格式的定义是RFC822的升级;相对于RFC822,将2位数年份改成4位数。
格式:DAY, DD MON YYYY hh:mm:ss GMT
示例数据:Sun, 21 Oct 2018 12:16:24 GMT
笔者理解:应该是在2000年出现以后,防止两位数年份防止产生错误/歧义
参考资料:
RFC1945
该协议规范并未对日期时间做出定义,只是引用了RFC协议中关于时间的定义
出于历史原因,HTTP/1.0应用允许三种格式来表示时间戳:
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
第一种格式是首选的Internet标准格式,表示方法长度固定(RFC1123[6])。第二种格
式在普通情况下使用,但是它是基于已经废弃的RFC850[10]中的日期格式,而且年不是用
四位数字表示的。HTTP/1.0 客户端及服务器端在解析日期时可识别全部三种格式,但是它
们不可以产生第三种时间格式(asctime) 。
注意:对于接收到由非HTTP应用产生的日期数据时,提倡对接收到的日期值进行填充。
这样做是因为,在某些时候,代理或网关可能通过SMTP或NNTP来获取或发送消息。
所有的HTTP/1.0 date/timp时间戳必须用世界时间(Universal Time,UT),即格林威治
时间来表示(Greenwich Mean Time,GMT),没有任何修改的余地。前面的两种格式用了
“GMT”表示时区,在读ASC表示的时间时,也应假定是这个时区。
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要求只能在协议流中使用data/time时间戳格式,不要求客户端及服务
器端在用户描述、请求登录等情况下使用这类格式。
摘自:超文本传输协议 -- HTTP/1.0
组织:中国互动出版网(http://www.china-pub.com/)
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
译者:黄晓东(黄晓东 xdhuang@eyou.com)
RFC2822
RFC3339
RFC7231
According to the RFC 7231, HTTP dates must be expressed in GMT. So expressing dates with offsets from UTC don't seem to be valid valid.
HTTP日期必须用GMT表示,UTC偏移量表示日期似乎无效了。
参考:https://stackoverflow.com/questions/54927845/what-is-valid-rfc1123-date-format
ISO8601
创作文章不容易,转载文章必须注明文章出处;如果这篇文章对您有帮助,点击右侧打赏,支持一下吧。
浙公网安备 33010602011771号