1

我正在使用 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 时区。

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

4

1 回答 1

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]);

这很好用,但似乎相当冗长。

于 2013-06-12T04:46:06.140 回答