簡體   English   中英

Date.getTime()給出2000年1月1日的時間

[英]Date.getTime() giving a time of 2000 1st Jan

我已經在幾台筆記本電腦中觀察到這種異常行為。 我在開發的應用程序中運行時遇到一些問題。 在調試時,我們發現新的Date.getTime()指向舊的date。 之后,我們嘗試在這些計算機上運行一個小程序。 以下是我們使用的代碼。

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));
    }
}

如果是少數情況,輸出類似於“ 946684800617”。 當我們看到日期時,它指向2000年1月1日和幾毫秒。 這並非在所有筆記本電腦中都發生。

想知道為什么會這樣,以便我們可以解決它。

PS:我們正在使用Windows 7(專業版),聯想ThinkPad L420

這樣並不能回答您的問題,但是您的代碼是如此復雜,可能會產生意想不到的后果。 您可以嘗試運行相同的功能嗎?

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]);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM