java中Calendar学习
Calendar认识
Calendar认识
通过源码可以发现Calendar类是一个抽象类:
public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar>
不能够通过new方式获得实例,calendar中为我们提供了多种方法获得对象
通过getInstance的方式可以获得当前时间对象。
Calendar主要方法
为了获得calendar格式的时间,可以通过getInstance获得对象,getInstance方法本身同样通过方法调用实现:
而calendar的底层实际上是进行了面向父类calendar的子类calendar的创建,通过calendar的官方源码可以看到:
private static Calendar createCalendar(TimeZone zone,
Locale aLocale)
{
CalendarProvider provider =
LocaleProviderAdapter.getAdapter(CalendarProvider.class, aLocale)
.getCalendarProvider();
if (provider != null) {
try {
return provider.getInstance(zone, aLocale);
} catch (IllegalArgumentException iae) {
// fall back to the default instantiation
}
}
Calendar cal = null;
if (aLocale.hasExtensions()) {
String caltype = aLocale.getUnicodeLocaleType("ca");
if (caltype != null) {
switch (caltype) {
case "buddhist":
cal = new BuddhistCalendar(zone, aLocale);
break;
case "japanese":
cal = new JapaneseImperialCalendar(zone, aLocale);
break;
case "gregory":
cal = new GregorianCalendar(zone, aLocale);
break;
}
}
}
if (cal == null) {
if (aLocale.getLanguage() == "th" && aLocale.getCountry() == "TH") {
cal = new BuddhistCalendar(zone, aLocale);
} else if (aLocale.getVariant() == "JP" && aLocale.getLanguage() == "ja"
&& aLocale.getCountry() == "JP") {
cal = new JapaneseImperialCalendar(zone, aLocale);
} else {
cal = new GregorianCalendar(zone, aLocale);
}
}
return cal;
}
Calendar使用
直接通过调用getInstance的方式可以获得当前的时间对象。
public static void main(String[] args){
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
通过getTime的方式可以将calendar转化成Date(java.util)的形式:
public static void main(String[] args){
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
System.out.println(date);
}
结果就是获得的日期: