RegExp для дат Extjs 3.4
У меня есть проблема, чтобы сделать regExp для панели поиска
&& (item.get('prodAddDate') >= dateStartValue.format("Y-m-d"))
&& (item.get('prodAddDate') <= dateEndValue.format("Y-m-d"));
Я не уверен, если это задача для refExp, но не имею никакой другой идеи
Проблема в том, что когда я не заполняю поле датой, я не могу фильтровать данные с другими условиями
Я пытался что-то подобное, но не работает
&& ((item.get('prodAddDate') >= dateStartValue.format("Y-m-d")) || (new RegExp(dateStartValue)).test(item.get('prodAddDate'))) &&
((item.get('prodAddDate') <= dateEndValue.format("Y-m-d")) || (new RegExp(dateEndValue)).test(item.get('prodAddDate')));
1 ответ
Не совсем уверен, что вы пытаетесь сделать, но вот некоторые сведения, которые, я надеюсь, помогут вам решить вашу проблему.
Приоритет операторов сравнения
&&
оператор имеет приоритет над ||
, Который означает, что:
A || B && C || D
Эквивалентно:
A || (B && C) || D
Не для:
(A || B) && (C || D)
Сравнение дат
Вы можете сравнить Date
объекты напрямую:
// example data
var d1 = new Date('2012-12-12'),
d2 = new Date('2012-12-12'),
d3 = new Date('2013-01-01');
И получить результат, который вы ожидаете с <
, >
, <=
, а также >=
:
// logical results
d1 < d3 // true
d1 < d2 // false
d2 > d3 // false
d1 <= d2 // true
d1 => d2 // true
Но не с помощью сравнения равенства ==
:
d1 == d2 // false
// yet...
d1 <= d2 && d1 => d2 // true
Вывод: для проверки, если одна дата до или после другой, прямое сравнение в порядке. Но, чтобы проверить, совпадают ли две даты, используйте сравнения строк:
// is this the same day?
d1.format('Y-m-d') === d2.format('Y-m-d') // true
// is this the same day and hour?
d1.format('Y-m-d H:i:s') === d2.format('Y-m-d H:i:s') // true
Ext.isEmpty ()
Ext.isEmpty
возвращается true
за: null
, undefined
и пустые строки ''
только
Ext.isEmpty(null) // true
Ext.isEmpty(undefined) // true
Ext.isEmpty('') // true
Ext.isEmpty(' ') // false
Ext.isEmpty(false) // false
// etc.
Это может быть полезно для решения вашего пустого поля:
...
&& (Ext.isEmpty(item.get('prodAddDate') || item.get('prodAddDate') >= dateStartValue)
&& (Ext.isEmpty(item.get('prodAddDate') || item.get('prodAddDate') <= dateEndValue)
в заключение
Что это за навязчивая идея о регулярных выражениях? Они полезны для сложного тестирования / извлечения строк, но это все. Наверное, тебе стоит на время забыть о них, чувак;p