Rally App SDK 2.0:无法按日期过滤

时间:2012-08-07 18:58:19

标签: javascript rally

我曾尝试按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)有这么简单的方法来格式化日期吗?或者我只需要解析并连接?

3 个答案:

答案 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);