将DateTime转换为Where Predicate中的字符串

时间:2014-10-30 00:51:37

标签: javascript breeze

我想创建一个Predicate,允许用户在日期中搜索文本字符串。

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

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

'contains'不适用于DateTime类型。

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

任何帮助表示感谢。

1 个答案:

答案 0 :(得分: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)));

当然,如果过滤器值是完整日期,那么请查找此日期。