2010-08-08 61 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

相关问题