#javascript #date #iso8601
#javascript #Дата #iso8601
Вопрос:
День, месяц и годы работают отлично, в то время как Szzs, измеряющие количество часов, — нет.. Размещение недопустимых данных в строке все равно будет истинным
«22/4 / 2015T25:18:32.1234.Z» или «22/4 / 2015T11:61:32.1234.Z»
Я устал использовать регулярные выражения
function validateDateFormat(input) {
var dateTest = input.split(/[.-/]/); //
var yyyy = parseInt(dateTest[2],10);
var mm = parseInt(dateTest[1],10);
var dd = parseInt(dateTest[0],10);
var date = new Date(yyyy,mm-1,dd,0,0,0,0);
return mm === (date.getMonth() 1) amp;amp; dd === date.getDate() amp;amp; yyyy === date.getFullYear();
}
alert(validateDateFormat("22/4/2015T230:18:32.1234.Z")) //true not valid
Я ожидаю, что вывод validateDateFormat(«22/4 / 2015T230:18:32.1234.Z») будет false
Комментарии:
1. Ну, вы проверяете только части даты, месяца и года. И они действительны. Вы никогда не проверяете время
2. Было бы неплохо, если бы входные строки даты на самом деле были ISO8601, чтобы использование
new Date( dateStr );
возвращало недопустимую дату, если входная строка не может быть правильно проанализирована.