作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法通过指定“日期大于 xxxxx”过滤器来返回 OData 中的一系列记录...但使用之前从 OData 源获取的日期?
用例:假设我想要构建一个网页来显示最近完成的在线订单的列表。这就是我的目标:
/Date(1338336000000)/
)/Date(1338336000000)/
我遇到的困难是指定日期“大于”过滤器。由于某种原因,OData 中的日期过滤器似乎与 OData 自己的 native 日期格式配合得不太好。我是否需要将最初获得的日期转换为可用于过滤的不同格式?
我想做这样的事情:
http://mydomain/Services/v001.svc/Orders?$filter=close_dt%20gt%201338336000000
仅供引用:我正在使用 V2
最佳答案
想通了。
OData V2 开箱即用,以 JSON 日期格式从 SQL 返回日期,如下所示:
/Date(1338282808000)/
但是,为了在 OData 调用中使用日期作为过滤器,您的日期必须采用 EDM 格式,如下所示:
2012-05-29T09:13:28
因此,我需要从初始 OData 调用中获取日期,然后将其转换为 EDM 格式,以便在后续 OData 调用中使用,如下所示:
/Services/v001.svc/Orders?$filter=close_dt gt DateTime'2012-05-29T09:13:28'
我最终创建了一个 javascript 函数来执行格式切换:
function convertJSONDate(jsonDate, returnFormat) {
var myDate = new Date(jsonDate.match(/\d+/)[0] * 1);
myDate.add(4).hours(); //using {date.format.js} to add time to compensate for timezone offset
return myDate.format(returnFormat); //using {date.format.js} plugin to format :: EDM FORMAT='yyyy-MM-ddTHH:mm:ss'
}
一些注意事项:
关于OData:日期 "Greater Than"过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14387673/
我是一名优秀的程序员,十分优秀!