Валидация даты/время без библиотеки Date.js
Здравствуйте! Вот, что умеет библиотека Date.js http://www.datejs.com/:
> Date.parseExact('01-01-2001', "MM-dd-yyyy")
Mon Jan 01 2001 00:00:00 GMT+0200 (EET)
> Date.parseExact('01-01-2001', "MM-dd-yyyy HH:mm:ss")
null
> Date.parseExact('01-01-2001 12:12:12', "MM-dd-yyyy HH:mm:ss")
Mon Jan 01 2001 12:12:12 GMT+0200 (EET)
То есть, Я могу провести валидацию даты и времени согласно нужному мне формату. Как добиться такого же результата без использования сторонних библиотек? Ну и конечно же не подходит вариант - скопировать код этой библиотеки себе в скрипт :) |
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Вот, решил таким образом:
function validate_date(date_str, date_format){
/* Validate date or datetime due to specified format
*
* Example: date_str "01/01/2016" valid with format "M/d/y",
* but invalid with format "M/d/y h:m:s"
*/
date_str = date_str.trim();
var letter = "", re = "";
// replace letters in format with regex digit "\d", thus 'd' must be first
replace_patterns = ['d', 'M', 'm', 'Y', 'y', 'H', 'h', 'm', 's']
for (i=0; i < replace_patterns.length; i++) {
pattern = replace_patterns[i];
re = new RegExp(pattern, 'g');
date_format = date_format.replace(re, '\\d');
}
var date_format_regex = new RegExp('^' + date_format + '$');
return (date_format_regex.test(date_str) && !isNaN(Date.parse(date_str)));
};
Единственная беда в том, что Date.parse() пропускает чуть ли не любое число для месяца и дня, к примеру:
>Date.parse('40/40/2015')
1525899600000
Ещё бы эту проблему решить как-то. |
Цитата:
Цитата:
|
Master_Sergius,
вам какой формат нужен? |
| Часовой пояс GMT +3, время: 06:41. |