2014-10-30 52 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))); 

當然,如果過濾器值則是一個完整的日期查找此日期。