RFC 2822和ISO 8601日期格式正则表达式

RFC 2822 and ISO 8601 date format regex

本文关键字:日期 格式 正则表达式 8601 ISO 2822 RFC      更新时间:2023-09-26

在JavaScript中有Date.parse()方法,它解析表示RFC 2822或ISO 8601日期的字符串(参见MDN)。在web上各种各样的数据源中,能够匹配这些日期格式(单独)的最可靠和全面的正则表达式是什么?

更新:如果没有合理的方法来获得全面的正则表达式来完全匹配这些格式,那么至少这些特定的 RFC和ISO格式的模式是什么,Date.parse()方法可以正确地接受和理解

我认为答案是说没有单一的正则表达式(或者更确切地说,这是一个坏主意,因为它将非常棘手和困难),将匹配RFC 2822或ISO 8601中列出的所有格式。此外,对所有格式使用正则表达式也不是一种安全和好的方法。但是,如果您有任何特定的格式,那么我们可以使用正则表达式。

你可以查看date.js和moment.js

编辑:

相同的MDN表示:

参数

dateString表示RFC822ISO 8601日期的字符串。

parse方法接受一个日期字符串(例如"Dec 25,1995 ")并返回自UTC时间1970年1月1日00:00:00以来的毫秒数。本地时区用于解释不包含时区信息的参数。此函数用于基于字符串值设置日期值,例如与setTime方法和date对象结合使用。

给定一个表示时间的字符串,parse返回该时间值。它接受RFC822/IETF日期语法 (RFC 1123 Section 5.2.14和其他地方)。1995年12月25日星期一13:30:00 gmt 。它可以理解美国大陆时区缩写,但对于一般用途,请使用时区偏移量,例如,"Mon, 25 Dec 1995 13:30:00 GMT+0430";(比格林威治子午线偏东4小时30分)。如果未指定时区,则假定为本地时区。GMT和UTC被认为是等价的。

日期/时间字符串也可以采用ISO 8601格式。从JavaScript 1.8.5/Firefox 4开始,支持ISO 8601的一个子集。例如:"2011-10-10"(只是日期)或"2011-10-10T14:48:00(日期和时间)可以传递和解析。目前还不支持ISO日期中的时区,例如:2011-10-10T14:48:00+0200"(带时区)还没有给出预期的结果。

从这里

这个格式包括日期格式:

  • YYYY
  • YYYY-MM
  • YYYY-MM-DD

所有数字必须以10为基数。如果MM或DD字段不存在,则以"01"为值。如果mm或ss字段不存在,则以"00"为值,不存在的sss文件的值为"000"。不存在的时区偏移值为" Z "。

也检查