【问题标题】:kendo: How to exclude time part from OdataStringkendo:如何从 OdataString 中排除时间部分
【发布时间】:2021-04-19 14:40:05
【问题描述】:

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

当用户选择某个日期时,比如说 2021 年 4 月 8 日,在转换为 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

【问题讨论】:

    标签: kendo-ui kendo-ui-angular2


    【解决方案1】:

    您实际上需要删除日期的 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, '');
    console.log("noTimeZoneQueryStr", noTimeZoneQueryStr);
    

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

    【讨论】:

    • 感谢您的解决方案。你摇滚!!!!!!让我试一试
    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 2013-06-20
    • 2013-05-05
    • 2011-03-17
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多