在查看几个日期字符串后,是否有编程方式来识别日期格式?
is there programmatic way to identify date format after reviewing few date strings?
假设我有一组日期字符串,
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 中。我不是在 vanila javascript 中寻找解决方案,如果你可以使用 momentjs
或 date-fns
指出我的解决方案,那很好。
提前谢谢你。
如评论所述,可以使用momentjs Parse Date Format插件
本插件添加parseFormat
方法:
That allows to create smart date inputs that let your users set a Date/Time and lets you extract the user's preferred format for future usage.
parseFormat
方法接受 preferredOrder
选项来自定义模糊输入的插件结果。您可以使用 preferredOrder
和您自己的逻辑来获得您想要的结果。
这里是一个函数示例,该函数 returns 数组中最 频繁 的格式,使用默认 parseFormat
行为提取:
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:
.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>
假设我有一组日期字符串,
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 中。我不是在 vanila javascript 中寻找解决方案,如果你可以使用 momentjs
或 date-fns
指出我的解决方案,那很好。
提前谢谢你。
如评论所述,可以使用momentjs Parse Date Format插件
本插件添加parseFormat
方法:
That allows to create smart date inputs that let your users set a Date/Time and lets you extract the user's preferred format for future usage.
parseFormat
方法接受 preferredOrder
选项来自定义模糊输入的插件结果。您可以使用 preferredOrder
和您自己的逻辑来获得您想要的结果。
这里是一个函数示例,该函数 returns 数组中最 频繁 的格式,使用默认 parseFormat
行为提取:
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:
.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>