0
    Calendar date1 = Calendar.getInstance();
    Calendar date2 = Calendar.getInstance();
    boolean checkTime = true;





        if (checkTime == true)
            before=date1.get(Calendar.SECOND);
        checkTime=false;

        after=date2.get(Calendar.SECOND);   

        difference= after-before;

我有它,这样之前的变量就会变成一个静态的秒,它会不断重新计算之后的时间,并得到两者之间的差异。但是,它似乎只更新了 'after' 变量一次,导致差异为 0。

附言。这是我正在玩的一款游戏,我试图让运动与时间相关。我无法弄清楚我做错了什么。

4

2 回答 2

0
Calendar date2 = Calendar.getInstance();

gets a Calendar that is initailized with the current date and time. After that it does not change, so after will always be the same value. If you are wanting new current time each iteration you will need to create a new instance (or use System.currentTimeMillis()) each iteration.

于 2013-02-19T05:54:59.617 回答
0

大多数情况下,您将得到 0,因为您的代码行在不到一毫秒的时间内执行。还有运行时优化和 GC 发挥作用。

总而言之,您无法确定结果是否非零。

你可以试试这样的

Calendar date1 = Calendar.getInstance();
try{
Thread.sleep(1000);
}catch(Exception e){}
Calendar date2 = Calendar.getInstance();

有差异为1。

也看看这里

于 2013-02-19T06:17:40.133 回答