我尝试按StateChangedDate和LastUpdateDate过滤投资组合项目,但我似乎没有成功。
{
property: 'StateChangedDate',
operator: '>',
value: (new Date() - 518400000)
}
我还尝试以与从投资组合项检索到的相同格式呈现它,以便比较结果不是以毫秒为单位的时间值。
var d = new Date(new Date() - 518400000);
{
property: 'StateChangedDate',
operator: '>',
value: d
}
但是,两者都不起作用,我最终没有返回任何投资组合项,即使我绝对确定有些项目应该通过过滤器。
编辑:看起来我必须使用与Rally用于存储它们的相同格式。(即 YYYY-MM-DDThh:mm:ss.nnnZ) 有没有一种简单的方法可以通过这种方式格式化日期?还是我只需要解析和连接?
我认为您应该能够使用Rally.util.DateTime.toIsoString函数来格式化日期对象。我相信这个代码片段可以完成您要做的事情:
var d = Ext.Date.add(new Date(), Ext.Date.DAY, -6);
{
property: 'StateChangedDate',
operator: '>',
value: Rally.util.DateTime.toIsoString(d)
}
谢谢,马特。我想我忽略了这个功能,因为我没有研究转换,直到我意识到它必须是ISO 8601格式。作为替代方案,我从Mozilla开发人员网络中获取了示例函数,它工作正常:http://mzl.la/O0tVVb
但是,为了简化事情,我想我会继续使用Rally的产品。
我刚才不得不这样做。这很烦人,因为它的格式不适用于IE8(否则你可以做一些像new Date(yourDate);)这样的事情。
因此,只需创建一个新的Date对象并进行一些字符串解析...
a = //your date from Rally here
b = a.split('T');
a = b[0];
c = b[1];
a = a.split('-');
year = a[0];
month = a[1];
day = a[2];
b = c.split('.');
ms = b[1].replace("Z", '');
b = b[0].split(':');
hour = b[0];
min = b[1];
sec = b[2];
tmpDate = new Date();
tmpDate.setUTCFullYear(year, month - 1, day);
tmpDate.setUTCHours(hour, min, sec, ms);