我曾尝试按StateChangedDate和LastUpdateDate过滤投资组合项目,但我似乎没有成功。
{
property: 'StateChangedDate',
operator: '>',
value: (new Date() - 518400000)
}
我还试图以与从Portfolio Items中检索的格式相同的格式呈现它,这样比较的结果不是以毫秒为单位的时间值。
var d = new Date(new Date() - 518400000);
{
property: 'StateChangedDate',
operator: '>',
value: d
}
然而,两者都没有效果,我最终没有返回任何投资组合项目,即使我绝对确定有些项目应该通过过滤器。
编辑:看起来我必须使用与Rally用于存储它们相同的格式。 (即YYYY-MM-DDThh:mm:ss.nnnZ)有这么简单的方法来格式化日期吗?或者我只需要解析并连接?
答案 0 :(得分:1)
我认为您应该能够使用Rally.util.DateTime.toIsoString函数来格式化日期对象。我相信这段代码会执行您要执行的操作:
var d = Ext.Date.add(new Date(), Ext.Date.DAY, -6);
{
property: 'StateChangedDate',
operator: '>',
value: Rally.util.DateTime.toIsoString(d)
}
答案 1 :(得分:0)
谢谢,马特。我认为我忽略了这个功能,因为直到我意识到它必须采用ISO 8601格式才进行转换。作为替代方案,我从Mozilla开发者网络中获取了示例函数,该函数可以正常工作:http://mzl.la/O0tVVb
然而,为了简化事情,我想我会继续使用Rally的产品。
答案 2 :(得分:0)
我不久前必须这样做。这很烦人,因为它的格式不适用于IE8(否则你可以做一些像新的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);