Строка полной даты Javascript в Boolean имеет значение true, хотя она недопустима

#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 ); возвращало недопустимую дату, если входная строка не может быть правильно проанализирована.