kendo: 如何从 OdataString 中排除时间部分

kendo: How to exclude time part from OdataString

我正在使用 toOdataString 方法将 filterExpression 转换为 OdataString。当字段为日期类型时,时间也被包含在内。

当用户选择某个日期时,比如 08-april-2021 在转换为 odataString 时它也会添加时间部分。

单位日期 eq 2021-04-08T00:00:00.000Z

用于复制的 Stackblitz:https://stackblitz.com/edit/angular-ivy-dzo3tn?file=src%2Fapp%2Fapp.ccomponent.ts

注意:在控制台中检查输出

可以像 $filter=date(unitdate) eq 2021-04-08 这样创建吗??

参考:https://github.com/OData/WebApi/issues/1473

您实际上需要删除日期的时区部分。请检查以下代码:

let queryStr = `${toODataString(state)}`;
const regex = /T00:00:00\.000Z/gi;
const noTimeZoneQueryStr = queryStr.replace(regex, '');
console.log("noTimeZoneQueryStr", noTimeZoneQueryStr);

请在此处找到更新的 Stackblitz:https://stackblitz.com/edit/angular-ivy-w7m4kd?file=src%2Fapp%2Fapp.ccomponent.ts

编辑 关于注释:是的。请考虑以下代码:

let queryStr = `${toODataString(state)}`;
const dateStr = /(r=| )Units Date /g;
let newQueryStr = queryStr.replace(dateStr, 'date(Units Date) ');
const regex = /T00:00:00\.000Z/gi;
const noTimeZoneQueryStr = newQueryStr.replace(regex, '');
console.log("noTimeZoneQueryStr", noTimeZoneQueryStr);

请在此处找到更新的 Stackblitz:https://stackblitz.com/edit/angular-ivy-jqma46?file=src%2Fapp%2Fapp.ccomponent.ts