Date.getTime()给出2000年1月1日的时间

时间:2012-04-03 07:20:06

标签: java windows windows-7

我在一些笔记本电脑中观察到这种不寻常的行为。我在开发的应用程序中遇到了一些问题。在调试它时,我们发现新的Date.getTime()指向一个旧日期。之后我们尝试在这些机器上运行一个小程序。以下是我们使用的代码。

import java.util.Date;
import java.util.concurrent.ConcurrentHashMap;

public class Test {

    public static void main(String... args)  {
        System.out.println(new Date().getTime());
        ConcurrentHashMap chm = new ConcurrentHashMap();

        for (int i = 0; i < 100000; i++) {
            chm.put(i, new Date().getTime());

                if (Long.parseLong(String.valueOf(chm.get(i))) < 1332334082344l) {
                    System.out
                            .println(Long.parseLong(String.valueOf(chm.get(i))));
                }



        }

        System.out.println("dONE "+chm.size()+" "+chm.get(1000));
    }
}

输出类似于&#34; 946684800617&#34;如果有几个案例。当我们看到它指向2000年1月1日的日期和几毫秒。所有笔记本电脑都没有发生这种情况。

想知道为什么会这样,以便我们可以解决它。

PS:我们正在使用Windows 7(专业版),联想ThinkPad L420

1 个答案:

答案 0 :(得分:1)

这不能回答你的问题,但你的代码太复杂了,可能会产生意想不到的后果。你可以尝试运行同样的东西吗?

public class Test {
    public static void main(String... args) {
        int length = 100000;
        System.out.println(System.currentTimeMillis());
        long[] times = new long[length];
        for (int i = 0; i < length; i++) {
            times[i] = System.currentTimeMillis();
            if (times[i] < 1332334082344L)
                System.out.println(times[i]);
        }
        System.out.println("Done " + times.length + " " + times[1000]);
    }
}