я использую momentjs работать с датами в моем проекте, когда пользователь вводит дату в формате M/D/YYYY
вернуться к MM/DD/YYYY
формату (например, 2/5/2017
к 02/05/2017
). Я также конвертирую любые недействительные даты или даты, которые больше, чем сегодня, для возврата к сегодняшней дате.Удаление предупреждения устаревания из momentjs
element.on("blur", function() {
var currentDate = moment().format('MM/DD/YYYY');
var formattedInput;
if (ctrl.$modelValue !== undefined && ctrl.$modelValue !== "") {
if(moment(ctrl.$modelValue, "MM/DD/YYYY", true).isValid()) {
formattedInput = moment(ctrl.$modelValue);
formattedInput.format('MM/DD/YYYY');
if (formattedInput.isAfter(currentDate)) {
ctrl.$setViewValue(currentDate);
ctrl.$render();
}
} else if (moment(ctrl.$modelValue, "M/D/YYYY", true).isValid()) {
formattedInput = moment(ctrl.$modelValue);
formattedInput.format('MM/DD/YYYY');
if (formattedInput.isAfter(currentDate)) {
ctrl.$setViewValue(currentDate);
ctrl.$render();
} else {
ctrl.$setViewValue(formattedInput.format('MM/DD/YYYY'));
ctrl.$render();
}
} else {
ctrl.$setViewValue(currentDate);
ctrl.$render();
}
}
});
Насколько я могу судить, все это прекрасно работает с кодом, который у меня выше. Но независимо от работоспособности, я получаю предупреждение об устаревании для не-ISO-дат. Мои мысли - использование формата MM/DD/YYYY
, однако это невозможно заменить из-за требований бизнеса. Есть ли способ устранить эту проблему не громоздким способом?
Вау, я не заметил, что .format() не возвращал мгновенный объект. Это в конечном итоге стало основной причиной проблемы, так как моя переменная 'today' сравнивалась с объектами строки и момента в моих вызовах' .isAfter(). С тех пор я изменил код для работы, изменив «var currentDate = moment()» и используя функции '.format()' при настройке значения представления. Огромное спасибо! – bang
Добро пожаловать! Я не заметил, что сегодня var рассматривается как строка, даже если вы уже решили свою проблему, я исправил свой пример кода после вашего комментария. – VincenzoC