3

У меня есть строка, как этотDetect даты между строками и временем с помощью momentjs

Occurs every 1 weeks on Sunday, Monday, Tuesday, Wednesday, Thursday, Friday and Saturday effective 2015-07-23T00:00:00 from T16:00:00 to T17:00:00 

Вы можете видеть, как я получил слова, время и дату. Мне нужно применять форматы к датам и времени, а интернационализация - к строкам.

код работает как этот

var result = ''; 
// get values as an array 
var arrValue = value.split(' '), resultArr = []; 
// iterate in each element 
for (var i = 0; i < arrValue.length; i++) { 
    // validate is a date 
    if (moment(arrValue[i], moment.ISO_8601).isValid() && (arrValue[i].indexOf('T') != -1)) { 
     // push into array 
     resultArr.push(moment(arrValue[i]).format('L')); 
     // validate is a time 
    } else if (moment('0001-01-01' + arrValue[i], moment.ISO_8601).isValid() && (arrValue[i].indexOf('T') != -1)) { 
     // push as a result the date 
     resultArr.push(moment('0001-01-01' + arrValue[i]).format('LT')); 
    } else { 
     // push the string in the collection 
     resultArr.push(sgI18NService.translate(['portfolio', 'activity-recurrence-field-' + arrValue[i]], arrValue[i])); 
    } 
} 

которой он работает нормально (тогда я присоединяюсь строки). Проблема заключается в том, что в IE не работает должным образом, чтобы распознавать некоторые строки, и это сбивает с толку их в качестве даты, например, после того, как я разделить строки, которые я получил каждый день в виде строки, и когда я оцениваю

moment('0001-01-01Thursday,', moment.ISO_8601).isValid() 

I получить false в Chrome (это нормально, поскольку четверг - это строка, а не дата), но в IE я верю. Я проверил, и это похоже, что превращает эту неверную дату минимальной даты

Tue Jan 01 1901 00:00:00 GMT-0500 

Этот пример был при оценке второй если. У меня есть проблема получения правильных дат с четверга и со вторника. Что я делаю неправильно? Как я могу разделить строки от дат и от времени в IE?

Редактировать: Строки ограничены, у меня есть другая комбинация строк, но они не введены пользователем.

+0

, возможно, вы хотите пространство там? '...- 01 четверг'? '01Thursday' не имеет большого смысла. –

+0

Мне нужно это, чтобы распознать время, потому что для чего-то вроде этого 'T17: 00: 00' Я бы имел' 0001-01-01T17: 00: 00', который действителен (который будет распознавать его как время), но '0001- 01-01 T17: 00: 00' нет (так что я не буду знать, если его время или строка) –

+0

хорошо, есть проблема. если вы не можете сказать, что именно, как вы можете ожидать от JS-двигателя? у него есть довольно приличная эвристика, но это не «умный» ... –

ответ

0

Ну, как мои входные строки были ограничены, и я знал, что случай я имел бы, я соответствовал строке, чтобы иметь номера

/\d/.test() 

работал для меня

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