代码之家  ›  专栏  ›  技术社区  ›  Sankha Karunasekara

在查看了几个日期字符串后,是否有识别日期格式的编程方法?

  •  0
  • Sankha Karunasekara  · 技术社区  · 6 年前

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

    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 那就好了。

    事先谢谢你。

    1 回复  |  直到 6 年前
        1
  •  1
  •   VincenzoC    6 年前

    如注释所述,您可以使用momentjs Parse Date Format 插件。

    这个插件添加了 parseFormat 方法:

    它允许创建智能日期输入,允许用户设置日期/时间,并允许您提取用户的首选格式以供将来使用。

    PARSES格式 方法接受 preferredOrder 为不明确的输入自定义插件结果的选项。你可以使用 优先次序 以及你自己的逻辑来获得你想要的结果。

    这里是一个返回最多 频繁的 在数组中使用默认提取的格式 分析格式 行为:

    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>