复习了几个日期字符串后,有没有编程的方法来标识日期格式?

时间:2018-12-06 13:16:03

标签: javascript momentjs date-fns

假设我有一组日期字符串,

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中。如果您可以使用momentjsdate-fns指向解决方案,那么我不是在Vanila javascript中寻找解决方案。

先谢谢您。

1 个答案:

答案 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>