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

Другие вопросы по тегам