微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决剑道:如何从 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 举报,一经查实,本站将立刻删除。