来自JS的OData日期过滤

时间:2013-06-11 10:59:23

标签: javascript sql-server devexpress odata

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

通过OData服务公开的SQL Server中的一个表是一个包含日期(而不是日期时间)字段的表。它通过OData暴露出来:

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

我试图通过日历控件过滤此字段上的数据,但是当我尝试过滤JS端的数据源时,我没有匹配。这是因为日期以UTC格式传递给OData服务,所以如果我查询TaskDate =&#39; 10 / JUL / 2013&#39;,我相信日期会以&#34; 09年7月9日14:00&#34;。如果我过滤TaskDate&gt; &#39; 10 / JUL / 2013&#39;我从&#34; 09 / JUL / 2013 14:00&#34;无论如何。

我尝试过宣布一个没有时间的新日期:

filterDate = new Date(2013, 6, 10)

但仍然无法正常工作,它仍然在JS方面减去10个格式时区。

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

1 个答案:

答案 0 :(得分: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]);

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