2012-02-20 3 views
0

Мне нужно создать один код JavaScript функцию, которая принимает два аргумента строку 1. Дата строка 2. Дата форматной строкиобщий метод для разбора даты с различными форматами

Теперь, согласно строке формата даты, я хочу чтобы проверить, соответствует ли строка даты правильному формату или нет. Ex. 1. «12-32-2012» 2. «dd-mm-yyyy»

Для вышеуказанных двух значений функция должна возвращать «ложь».

Здесь твист заключается в том, что пользователь может изменить формат даты в любом формате, и мне нужно соответствующим образом проверить дату. У меня есть поиск много, но я не могу найти общую (общую) функцию, которая проверяет строку с другим форматом даты. Может ли это быть достижимым или мне нужно написать другой оператор CASE для всего возможного формата даты.

спасибо.

+0

@Jergason Посмотрите на мой вопрос: может ли это быть достижимым или мне нужно написать другой оператор CASE для всего возможного формата даты. Я спросил код? – user867198

+0

Извините, неверно сформулируйте вопрос. – jergason

ответ

1

Возможно, это делает то, что вы хотите?

function chkdate(datestr,formatstr){ 
    if (!(datestr && formatstr)) {return false;} 
    var splitter = formatstr.match(/\-|\/|\s/) || ['-'] 
     ,df  = formatstr.split(splitter[0]) 
     ,ds  = datestr.split(splitter[0]) 
     ,ymd  = [0,0,0] 
     ,dat; 
    for (var i=0;i<df.length;i++){ 
      if (/yyyy/i.test(df[i])) {ymd[0] = ds[i];} 
     else if (/mm/i.test(df[i])) {ymd[1] = ds[i];} 
     else if (/dd/i.test(df[i])) {ymd[2] = ds[i];} 
    } 
    dat = new Date(ymd.join('/')); 
    return !isNaN(dat) && Number(ymd[1])<=12 && dat.getDate()===Number(ymd[2]); 
} 
//usage 
console.log(chkdate ('12/12/2009', 'dd/mm/yyyy')); //=> true 
console.log(chkdate ('12/32/2009', 'dd/mm/yyyy')); //=> false 
console.log(chkdate ('2002/02/02', 'yyyy-dd-mm')); //=> false 
console.log(chkdate ('02-12-2001', 'dd-mm-yyyy')); //=> true 
console.log(chkdate ('02-12-2001', 'dd mm yyyy')); //=> false 
+0

Если мой формат даты изменяется на dd.mm.yyyy. Какие все изменения мне необходимо внести в ваш код? –

+1

Изменить 'formatstr.match (/ \ - | \/\ \ s /)' на 'formatstr.match (/ \ - \ \/\ \ s \\ ./)' – KooiInc

Смежные вопросы