Есть ли программный способ определить формат даты после просмотра нескольких строк даты?
Допустим, у меня есть массив строк даты,
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
Это было бы хорошо.
заранее спасибо.
1 ответ
Как указано в комментариях, вы можете использовать плагин Momentjs Parse Date Format.
Этот плагин добавить parseFormat
метод:
Это позволяет создавать интеллектуальные вводы даты, которые позволяют вашим пользователям устанавливать дату / время, и позволяет вам извлекать предпочтительный формат пользователя для будущего использования.
parseFormat
метод принимает preferredOrder
опции для настройки результатов плагина для неоднозначных входов. Ты можешь использоватьpreferredOrder
и ваша собственная логика, чтобы получить желаемый результат.
Вот пример функции, которая возвращает наиболеераспространенный формат в массиве с извлеченным по умолчанию 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: https://stackru.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>