Разделите строку по точкам, переставьте год, месяц и день и соедините обратно. Преобразование через Date не нужно и может добавить лишнюю зависимость от часового пояса.
Перестановка компонентов даты
Разделите строку по точкам, переставьте год, месяц и день и соедините обратно. Преобразование через Date не нужно и может добавить лишнюю зависимость от часового пояса.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте функцию swapDate(order) (или любую другую названную вами), которая получает строку даты, записанную как dd.mm.yyyy, и возвращает её в виде yyyy.mm.dd.
// input: "15.01.2022"
// output: "2022.01.15"
Ответ
Разделите строку по точкам, переставьте год, месяц и день и соедините обратно. Преобразование через Date не нужно и может добавить лишнюю зависимость от часового пояса.
function swapDate(text) {
const match = /^([0-9]{2})\.([0-9]{2})\.([0-9]{4})$/.exec(text);
if (!match) throw new Error('Ожидается dd.mm.yyyy');
const [, day, month, year] = match;
return `${year}.${month}.${day}`;
}
Ведущие нули сохраняются, для 15.01.2022 получится 2022.01.15. Регулярное выражение проверяет только форму записи, а не существование календарной даты. Если нужна проверка вроде 31 февраля, её следует добавить отдельно.