Метод Cleave.js getISOFormatDate применяется для
получения даты в стандартизированном формате ISO-8601 на основе текущего
значения, управляемого экземпляром форматтера. В контексте библиотеки он
рассматривается как вспомогательный механизм нормализации дат, когда
пользовательский ввод преобразуется из локального или частично
форматированного представления в строго структурированную строку.
Основная задача заключается в преобразовании внутреннего значения
даты, которое может храниться в пользовательском формате (например,
DD/MM/YYYY, MM-DD-YYYY или смешанном вводе), в
ISO-строку вида YYYY-MM-DD.
Ключевая особенность заключается в отделении визуального представления данных от их логического значения. В интерфейсе данные могут отображаться в удобном локальном формате, но для хранения, передачи в API или обработки на сервере требуется унифицированный формат.
Метод выполняет следующие функции:
YYYY-MM-DD);Внутренний процесс работы строится вокруг разбиения форматированной строки на компоненты даты и их последующего перестроения.
Типовой алгоритм:
YYYY-MM-DD.Если исходное значение неполное или содержит некорректные символы, результат либо нормализуется частично, либо возвращается пустая строка.
Метод всегда возвращает строку. В случае валидного ввода результат соответствует ISO 8601:
YYYY-MM-DD
Примеры:
12/08/2026 → 2026-08-1201-02-2025 → 2025-02-012024.11.30 (при распознавании формата) →
2024-11-30При отсутствии валидных данных результатом может быть:
""
В рамках Cleave.js значение, используемое
getISOFormatDate, берётся из уже отформатированного
состояния экземпляра, а не напрямую из DOM-элемента.
Это означает:
Таким образом, корректность результата напрямую определяется тем, как был сконфигурирован экземпляр форматтера.
const cleave = new Cleave('#date-input', {
date: true,
delimiter: '/',
datePattern: ['d', 'm', 'Y']
});
// получение ISO-формата
const isoDate = cleave.getISOFormatDate();
console.log(isoDate); // 2026-08-12
В данном примере вводимое значение интерпретируется как дата с порядком день/месяц/год, после чего преобразуется в стандартизированную строку.
Поведение метода зависит от конфигурации
datePattern.
datePattern: ['d', 'm', 'Y']
Ввод:
31/12/2025
Результат:
2025-12-31
datePattern: ['m', 'd', 'Y']
Ввод:
12/31/2025
Результат:
2025-12-31
datePattern: ['Y', 'm', 'd']
Ввод:
2025/12/31
Результат:
2025-12-31
При неполном вводе метод демонстрирует предсказуемое поведение:
Примеры:
Ввод:
12/08/
Результат:
""
Ввод:
12//
Результат:
""
Такое поведение обусловлено необходимостью строгого соответствия ISO-формату.
Перед формированием строки выполняется проверка:
Некорректные значения блокируют формирование итоговой строки.
Пример:
Ввод:
40/15/2025
Результат:
""
Методы getFormattedValue и getISOFormatDate
решают разные задачи.
Возвращает значение в текущем пользовательском формате:
31/12/2025
Возвращает нормализованное значение:
2025-12-31
Таким образом:
В системах обмена данными ISO-формат используется как стандарт.
Типовые сценарии:
Пример интеграции:
const payload = {
date: cleave.getISOFormatDate()
};
fetch('/api/save', {
method: 'POST',
body: JSON.stringify(payload)
});
Метод всегда отражает текущее состояние экземпляра. При изменении input:
cleave.setRawValue('01/01/2026');
console.log(cleave.getISOFormatDate()); // 2026-01-01
Если значение обновляется программно, результат также пересчитывается динамически.
Существуют ограничения, обусловленные архитектурой форматирования:
datePattern;Хотя отображение может быть локализовано, ISO-формат остаётся неизменным:
31.12.20252025-12-31Это обеспечивает независимость от региональных настроек.
Метод часто применяется в комбинации с другими функциями экземпляра Cleave.js:
const value = cleave.getISOFormatDate();
if (value) {
validateDate(value);
sendToServer(value);
}
Такой подход позволяет отделять форматирование от бизнес-логики.
При очистке input:
cleave.setRawValue('');
cleave.getISOFormatDate(); // ""
Возвращается пустая строка, что сигнализирует об отсутствии валидного значения.
Метод может использоваться как промежуточный слой между кастомным форматированием и нативным HTML5-полем.
document.querySelector('input[type="date"]').value =
cleave.getISOFormatDate();
Это позволяет унифицировать поведение различных форм ввода даты.
Метод работает как детерминированный преобразователь состояния: