拉力赛应用程序 SDK 2.0:无法按日期筛选



我尝试按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);

最新更新