【问题标题】:OData Date Filtering from JS来自 JS 的 OData 日期过滤
【发布时间】:2013-06-12 12:46:06
【问题描述】:

我正在使用 Devexpress 的 DXTREME 框架将 HTML 移动应用程序连接到 OData 源。

我在 SQL Server 中通过 OData 服务公开的一个表是一个包含日期(不是日期时间)字段的表。它通过 OData 公开,如下所示:

<d:TaskDate m:type="Edm.DateTime">2010-04-01T00:00:00</d:TaskDate>

我正在尝试通过日历控件过滤此字段上的数据,但是当我尝试在 JS 端过滤数据源时,我没有得到任何匹配项。这是因为日期以 UTC 格式传递给 OData 服务,所以如果我查询 TaskDate = '10/JUL/2013',我相信日期传递为“09/JUL/2013 14:00 ”。如果我在 TaskDate > '10/JUL/2013' 上进行过滤,无论如何我都会在“09/JUL/2013 14:00”之后得到结果。

我尝试过声明一个没有时间部分的新日期:

filterDate = new Date(2013, 6, 10)

但是还是不行,还是在JS端减去10个formy时区。

我想要做的是返回在该特定日期有效的任务列表。我怎样才能做到这一点?

【问题讨论】:

    标签: javascript sql-server devexpress odata


    【解决方案1】:

    我认为我的问题是 dxDateBox 控件只返回一个日期,并且该日期在传递给我的 odata 服务时被更改。

    我自己通过将日期转换为 UTC 解决了这个问题,但只使用控件中的 Date 部分(其中 filterDate 来自控件):

    var paramDate = new Date(Date.UTC(this.filterDate().getFullYear(), this.filterDate().getMonth(), this.filterDate().getDate()));
    this.dataSource.filter(["TaskDate", "=", paramDate]);
    

    这很好用,但看起来相当冗长。

    【讨论】:

      猜你喜欢
      • 2022-11-08
      • 2012-06-21
      • 1970-01-01
      • 2012-11-07
      • 2020-02-10
      • 2018-06-19
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      相关资源
      最近更新 更多