请问Calendar获取时间最终是调用的系统API还是由java自己实现的功能?请高人指教
解决方案 »
- switch怎么返回继续判断?
- 急求:两个类实现网络连接后可以调用repaint()方法么
- MappedByteBuffer的问题
- logic:equal 标签
- JFileChooser 中如何截获(屏蔽)HOME、向上一层及双击文件夹时的消息
- clob weblogic
- 新年到,新年好,在j2se里第一次散分,望多多捧场!
- 我是JAVA论坛的新成员,也是刚刚开始接触JAVA的菜鸟。望大家多多帮助我!
- 菜鸟:关于StringTokenizer的应用??
- String 源码中的value.
- 求大神指导Socket通信问题
- 我用myeclipse 8.5写了一个MenuBar,运行之后产生了中文乱码,求大神帮忙解决
你可以这样试试。
Calendar cal=new GregorianCalendar();
System.out.println(cal.getTime());
把这两句。分别在当前时间和改完系统日期之后执行。看输入的时间就可以了。
public static Calendar getInstance(){
Calendar cal = createCalendar(TimeZone.getDefaultRef(), Locale.getDefault());
cal.sharedZone = true;
return cal;
}继续跟踪createCalendar()函数:
private static Calendar createCalendar(TimeZone zone,
Locale aLocale)
{
// If the specified locale is a Thai locale, returns a BuddhistCalendar
// instance.
if ("th".equals(aLocale.getLanguage())
&& ("TH".equals(aLocale.getCountry()))) {
return new sun.util.BuddhistCalendar(zone, aLocale);
} else if ("JP".equals(aLocale.getVariant())
&& "JP".equals(aLocale.getCountry())
&& "ja".equals(aLocale.getLanguage())) {
return new JapaneseImperialCalendar(zone, aLocale);
} // else create the default calendar
return new GregorianCalendar(zone, aLocale);
}所以最终就是:GregorianCalendar,再看看其构造函数:
public GregorianCalendar(TimeZone zone, Locale aLocale) {
super(zone, aLocale);
gdate = (BaseCalendar.Date) gcal.newCalendarDate(zone);
setTimeInMillis(System.currentTimeMillis());
}
所以很清楚了,最终其实就是靠 System.currentTimeMillis(),来计算当前时间的,就是系统时间了。
具体实现逻辑可参考源码。