date.getTime()差异问题

时间:2010-12-19 23:35:30

标签: java gettime

问候,

我有一个永远不会过去的简单条件:

if(datas.date.getTime()-temps.date.getTime()>=5000)

我想检查一下是否有5秒钟。


更新

这是setter和getter:

public class Data{
    Date date;
    public Date getDate() {
        return date;
    }
    public void setDate() {
        Date now = new Date();
        this.date = now;
    }
}

所以,我打电话给

Data data;
data.setDate();
processValues(data);

这是processValues:

public void processValues(Data dat){

    if(datas.size()==7){
        writeValues(datas);
        datas=new Vector<Data>();
        temps=new Vector<Data>();
    }
    temps.add(dat);
    datas.add(dat);
}

这是writeValues:

public void writeValues(Vector<Data> datas){
    for(i=0;i<temps.size();i++)
        for(j=0;j<datas.size();j++){
            if(temps.elementAt(i).epc==datas.elementAt(j).epc)
                if(datas.elementAt(j).date.getTime()-temps.elementAt(i).date.getTime()>=5000)
                    try {
                        dao.writeToDatabase(datas.elementAt(j));
                        i=j;
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
        }

}

3 个答案:

答案 0 :(得分:0)

如果输出datas.date.getTime()temps.date.getTime(),哪一个更高?我的猜测是它们被颠倒了,减法给出了一个负数 - 当然绝不会超过5000.或者数据点不是相隔5秒。

答案 1 :(得分:0)

你说你有一个看起来像这样的吸气剂:

public Date getDate() {
    return date;
}

Date个对象是可变的,所以你应该可以防御性地复制。您可以使用clone()

根据你和你的问题的症状,也许你的两个Date对象实际上是同一个对象。您是否尝试过使用==(或!=)来确认它们确实是独立的对象?

更新

根据更新的信息,我可以看到为什么这种情况永远不会过去。但是,我真的不明白你希望你的代码做什么。你基本上只是测试你是否可以在不到5秒的时间内创建7个对象,如果你不能,那么你可以写出其中的一些。无论哪种方式,您都可以清除tempsdatas,无论您是否写出对象。我的猜测是你不想清除这些未写出的元素向量。我也不知道为什么当datastemps包含完全相同的元素时,为什么同时包含{{1}}和{{1}}。

答案 2 :(得分:0)

你说你的processValues()方法如下所示:

public void processValues(Data dat){
    if(datas.size()==7){
        writeValues(datas);
        datas=new Vector<Data>();
        temps=new Vector<Data>();
    }
    temps.add(dat);
    datas.add(dat);
}

您正在向两个向量添加相同的实例(“dat”)。如果你更新一个,它必然会更新另一个,所以date字段永远不会有差异。