如何解决剑道:如何从 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
解决方法
您实际上需要删除日期的 TimeZone 部分。请检查以下代码:
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,'$1date(Units Date) ');
const regex = /T00:00:00\.000Z/gi;
const noTimeZoneQueryStr = newQueryStr.replace(regex,noTimeZoneQueryStr);
请在此处找到更新的 Stackblitz:https://stackblitz.com/edit/angular-ivy-jqma46?file=src%2Fapp%2Fapp.ccomponent.ts
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。