假设我有一组日期字符串,
const a = ["11/23/2018","10/22/1992","02/02/1993","01/01/1990",...];
const b = ["12/01/2018","12/12/1992","24/09/1993","16/01/1990",...];
可以识别每个数组的数据格式,例如
a => MM/DD/YYYY
b => DD/MM/YYYY
在javascript中。如果您可以使用momentjs
或date-fns
指向解决方案,那么我不是在Vanila javascript中寻找解决方案。
先谢谢您。
答案 0 :(得分:1)
如评论中所述,您可以使用momentjs Parse Date Format插件。
此插件添加了parseFormat
方法:
这允许创建智能日期输入,让您的用户设置日期/时间,并提取用户的首选格式以供将来使用。
parseFormat
方法接受preferredOrder
选项以针对大量输入来自定义插件结果。您可以使用preferredOrder
和自己的逻辑来获得所需的结果。
下面是一个函数示例,该函数以默认的parseFormat
行为提取并返回数组中最 frequent 格式:
const a = ["11/23/2018","10/22/1992","02/02/1993","01/01/1990"];
const b = ["12/01/2018","12/12/1992","24/09/1993","16/01/1990"];
function getFormat(arr){
return arr.map((elem) => moment.parseFormat(elem))
// get most frequent element from here: https://stackoverflow.com/a/20762713/4131048
.sort((a,b) =>
arr.filter(v => v===a).length
- arr.filter(v => v===b).length
).pop();
}
console.log( getFormat(a) );
console.log( getFormat(b) );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.2/moment.min.js"></script>
<script src="https://gr2m.github.io/moment-parseformat/moment-parseformat.js"></script>