2

我曾尝试按 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) 有没有一种简单的方法来格式化日期?还是我只需要解析和连接?

4

3 回答 3

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)
}
于 2012-08-07T19:47:36.407 回答
0

谢谢,马特。我想我忽略了这个功能,因为我没有考虑转换,直到我意识到它必须是 ISO 8601 格式。作为替代方案,我从 Mozilla 开发人员网络中获取了示例函数,该函数运行良好: http: //mzl.la/O0tVVb

但是,为了简化事情,我想我会继续使用 Rally 的产品。

于 2012-08-07T20:21:27.817 回答
0

我不得不在不久前这样做。这很烦人,因为它的格式不适用于 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);
于 2012-08-13T22:53:34.280 回答