是否有可能实现一种“;猜测;此日期格式基于数组中的信息
Is it possible to implement a way to "guess" this date format based on the information in the array?
在JavaScript语言中,
我有一个数组。。。也许它看起来像这个
var all_date = new Array( "11/12/2009", "31/12/2010", "29/12/2011", "17/09/2011" );
是否可以实现一种方法,根据数组中的信息"猜测"此日期格式,并可能向用户建议最有可能的日期格式?例如年月日
当然,如果数据恰好包含大于12的日期值,并且年份为四位数(正如您引用的数据所做的那样),您不会猜测,您可以确定您的格式是正确的。
但是,如果数据中的所有日期值都是12或更低,则无法确定数据是美国MM/DD/YYYY格式还是更常见的DD/MM/YYYY格式。
因此,不,在一般情况下,您不能可靠地推断格式。数据源应提供格式信息(在文档等中),最好使用不太模糊的格式,如YYYY/MM/DD。
嗯,在某种程度上,是的,你可以。一个显而易见的方法是使用正则表达式。假设你有一个日期,比如2020-10-31,你可以用RegExp测试它,提取令牌(年、月和月),一旦标识了令牌,你就可以将它们映射到相应的格式令牌(YYYY、MM和DD)。
现在考虑RegExp,/^('d{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2]'d|3[0-1])$/
;简单地说,它匹配形式为(4位数字的年份)-(月份,也许)-(月日,也许)的字符串;括号表示捕获组。在这里捕获组,基本上会为您提取代币(年、月和月中日部分)。试试下面的片段,
console.log('2020-10-31'.match(/^('d{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2]'d|3[0-1])$/));
一旦标识了令牌,就可以很容易地构造格式字符串YYYY-MM-DD。
不过,请注意,如果日期不明确,则无法准确确定令牌语义。考虑2020年1月1日,它可以是DD/MM/YYYY或MM/DD/YYYY中的任何一个。尽管如此,该方法对于标准日期-时间格式(ISO8601和RFC2822)来说效果非常好。
详细参考:-
- 正则表达式
- 以下是moment.js源代码的一个片段,它可以满足您的要求,但仅适用于符合ISO 8601的日期
- 这是我写的一个包,它对其他格式也做了同样的事情,解释了歧义
- 在对象上迭代以验证它是否's键存在于数组中
- 如何创建独立于数组更新的组件列表
- 仅当项目没有't存在于数组中
- 如何将json格式的数组数据从jquery返回到html
- 检查值存在于数组位置
- 我有一个特定格式的数组,我想替换如下所示的键
- 如何检查值是否存在于数组的对象中
- Javascript强制数组的行为类似于数组
- 如何将子字符串应用于数组中的每个字母
- 检查元素是否存在于数组中,而不遍历它
- Mootools每个函数只适用于数组中的最后一个基金
- 是否有可能实现一种“;猜测;此日期格式基于数组中的信息
- 如何将类应用于数组中段落标记中的所有单词
- 将隐藏应用于数组中的第一个元素
- 以特定格式将数组保存到MySQL
- 将方法应用于数组中的单个元素-jquery/javascript
- 检查键存在于数组中
- 将逐位运算符应用于数组的值
- 检查变量是否存在于数组的数组中
- 使用javascript Push到数组,只要项目不存在于数组中