时间戳列表会覆盖先前的时间戳

时间:2014-06-09 07:25:14

标签: java timestamp

我使用arraylist存储过去5周的时间戳列表。

   i.e., if today is 2014-06-09, I want to store 
   2014-06-02 
   2014-05-26 
   2014-05-19 
   2014-05-12       
   2014-05-05

这是我的代码。

public class Test {

public static void main(String ap[]) throws InterruptedException{
List<Timestamp> ts = new ArrayList<Timestamp>();
Timestamp t = new Timestamp(new java.util.Date().getTime());
Timestamp temp = null;

for(int i=0;i<5;i++){
    t.setTime(t.getTime()-(7*24 * (long)60* (long)60) * (long)1000);
    temp = t;
    System.out.println(t);
    ts.add(temp);
    temp = null;
        }
}
}

但问题始终是我得到了覆盖值的列表,即列表包含所有元素作为上一个时间戳,即2014-05-05) 任何人都可以回答这个问题吗?

1 个答案:

答案 0 :(得分:2)

你没有得到&#34; new&#34;时间戳是因为你保持覆盖相同的时间并将其添加到列表中 - 所以最终将相同的对象输入5次到列表中,最后一个值将显示在&#34; all&#34;这几项。您不需要temp - 只需创建一个新的Timestamp对象并将其添加到列表中:

    List<Timestamp> ts = new ArrayList<Timestamp>();
    Timestamp t = new Timestamp(new java.util.Date().getTime());

    for(int i=0;i<5;i++){
        t.setTime(t.getTime()-(7*24 * (long)60* (long)60) * (long)1000);
        System.out.println(t);
        ts.add(new Timestamp(t.getTime()));
    }