2015-10-17 106 views
1

當我調用方法date.toString()兩次時,即使存在兩秒的間隔,我也得到相同的結果。我認爲第二次應該比第一次多2秒。爲什麼使用date.toString()兩次打印相同的結果

方案例如:

Date date = new Date(); 
System.out.println(date.toString()); 
System.out.println("----------"); 
Thread.sleep(2000); 
System.out.println(date.toString()); 

輸出是

Sat Oct 17 17:54:39 CST 2015 
---------- 
Sat Oct 17 17:54:39 CST 2015 
+2

'Date'只是包含它初始化的時間。它不是一個時鐘,它只是表示一個特定的日期/時間。 – RealSkeptic

+1

你爲什麼認爲存儲在'date'中的時間戳應該改變? – Tom

+0

順便說一下,在Java 8及更高版本中,舊的java.util.Date類已被新的[java.time](http://docs.oracle.com/javase/8/docs/api/java/ time/package-summary.html)框架。特別是對於這個問題,請看「Instant」和「ZonedDateTime」類。 –

回答

4

引用Date(重點煤礦)的構造的的Javadoc:

分配Date對象,並初始化它代表了它被分配的時間,測量到最接近的毫秒。

因此,打印的Date是創建對象的日期。由於您打印的是同一個對象,因此它將是相同的輸出。

Date date = new Date(); 
System.out.println(date.toString()); 
System.out.println("----------"); 
Thread.sleep(2000); 
date = new Date(); // instantiate a new Date here 
System.out.println(date.toString()); 

輸出我的機器上:

Sat Oct 17 12:09:16 CEST 2015 
---------- 
Sat Oct 17 12:09:18 CEST 2015 
+0

謝謝你是對的 – wanghao

+0

是的,我喜歡這種方式 – wanghao

0

試試這個...

Date date = new Date(); 
System.out.println(date.toString()); 
System.out.println("----------"); 
Thread.sleep(2000); 
date = new Date(); 
System.out.println(date.toString()); 

只是 「日期」 打印第二次之前再次發起

相關問題