2010-08-08 35 views
2

Calendar.getInstance()方法如何使您獲得當前年份?它不會從互聯網上明顯地從您的計算機上讀取它。這可能聽起來像一個新手問題,但這種方法是如何工作的?Calendar.getInstance()如何知道當前年份?

+1

如果它不是從您的計算機讀取它,也不是從外部來源讀取它,它必須是猜測或通靈! – 2010-08-08 19:37:02

+0

大聲笑!它讓我感到困惑,因爲我在PC上改變了一年,我仍然得到了2010年! – 2010-08-08 19:39:29

+0

您可能需要重新啓動Java。 – starblue 2010-08-09 09:13:25

回答

8

實際上,它確實從您的計算機中讀取它。在內部,它調用GregorianCalendar的構造函數,它調用System.currentTimeMillis(),這是一種本地方法。

根據您的區域設置,還可能會創建一個JapaneseImperialCalendarBuddhistCalendar,它們也都會調用System.currentTimeMillis()

2
Calendar.getInstance() 

僅僅是

new GregorianCalendar() 

的快捷方式使用它初始化本身:

setTimeInMillis(System.currentTimeMillis()); 

因此,關鍵是

System.currentTimeMillis() 

這的確確實從您的計算機中讀取它。

+2

這不是一條捷徑。它返回當前語言環境的合適實例。在使用公曆日曆的語言環境中,抽象工廠方法將返回'GregorianCalendar'。 – BalusC 2010-08-08 19:42:12

+0

你說得對。我在這裏尋找(http://www.docjar.com/html/api/java/util/Calendar.java.html,第984行),這似乎與JDK不同。 – whiskeysierra 2010-08-08 21:00:11

相關問題