2014-10-30 53 views
0

我想创建一个Predicate,它允许用户搜索文本字符串的日期。将DateTime转换为Where Where Predicate中的字符串

breeze.Predicate.create('startDate', 'contains', filterValue); 

过滤器值由用户输入,例如, '2014-06-'

'contains'将不适用于DateTime类型。

创建谓词时,是否可以将'startDate'转换为格式化的字符串类型?

任何帮助表示赞赏。

回答

0

假设日期格式固定为yyyy-mm-dd,那么您最好的选择可能是将部分日期转换为实际日期。

  • 如果过滤器值超过7个字符,假定它是年份和月份并相应地解析它。创建两个日期,一个月的第一天(filterStartDate)和该月的最后一天(filterEndDate)。你可以看看there这样做。有了这两个日期,你将能够模仿contains的东西,如:
Predicate 
.create('startDate', '>=', filterStartDate) 
.or( 'startDate', '<', filterEndDate); 
  • 如果过滤器值小于7个字符假设它仅仅是一年。解析年(filterYear),并做一些事情,如:
Predicate 
    .create('startDate', '>=', new Date(Date.UTC(filterYear, 0, 1))) 
    .or( 'startDate', '<', new Date(Date.UTC(filterYear, 11, 30))); 

当然,如果过滤器值则是一个完整的日期查找此日期。