switch (this.maskType) {
case "time":
return value
.slice(0, 5)
.replace(/(\D)/g, "")
.replace(/(\d{2})(\d{1,2})/, "$1:$2")
.split(":")
.map((val) => (parseInt(val) > 59 ? 59 : val).toString())
.join(":");
case "date":
return ((value: string) => {
const maxLen = (val: any, max: number) => {
return (parseInt(val) > max ? max : val).toString();
};
const sliced = value.slice(0, 10).replace(/(\D)/g, "");
if (sliced.length >= 5) {
const day = sliced.slice(0, 2);
const month = sliced.slice(2, 4);
const year = sliced.slice(4);
return `${maxLen(day, 31)}.${maxLen(month, 12)}.${maxLen(
year,
new Date().getFullYear()
)}`;
} else if (sliced.length >= 3) {
const day = sliced.slice(0, 2);
const month = sliced.slice(2);
return `${maxLen(day, 31)}.${maxLen(month, 12)}`;
}
return maxLen(sliced, 31);
})(value);
default:
return value;
}
}
Вот такой монстр получился
Только теперь добавь console.time и console.timeEnd 🤣
жуть
Самому страшно, но пришлось еще проверить чтобы минуты и секунды не вылазили за 59, а день/месяц/год за 31/12/2020
Обсуждают сегодня