在Where谓词中将DateTime转换为字符串

Convert DateTime to string in Where Predicate

本文关键字:转换 字符串 DateTime Where 谓词      更新时间:2023-09-26

我想创建一个谓词,允许用户搜索文本字符串的日期。

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

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

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

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

感谢您的帮助。

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

  • 如果筛选值超过7个字符,则假定它是年和月,并相应地对其进行解析。创建两个日期,即本月的第一天(filterStartDate)和本月的最后一天(filterEndDate)。你可以去那里看看。有了这两个日期,您将能够用以下内容模拟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)));

当然,如果筛选值是一个完整的日期,则查找该日期。