第一部分 Calendar介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ywl470812087/article/details/88706319

第一部分 Calendar介绍

Calendar 定义:

public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar> {}

Calendar 可以看作是一个抽象类。
它的实现,采用了设计模式中的工厂方法。表现在:当我们获取Calendar实例时,Calendar会根据传入的参数来返回相应的Calendar对象。获取Calendar实例,有以下两种方式:
(1) 当我们通过 Calendar.getInstance() 获取日历时,默认的是返回的一个GregorianCalendar对象。
     GregorianCalendar是Calendar的一个实现类,它提供了世界上大多数国家/地区使用的标准日历系统。
(2) 当我们通过 Calendar.getInstance(TimeZone timezone, Locale locale) 或 Calendar.getInstance(TimeZone timezone) 或 Calendar.getInstance(Locale locale)获取日历时,是返回“对应时区(zone) 或 地区(local)等所使用的日历”。 
     例如,若是日本,则返回JapaneseImperialCalendar对象。

参考如下代码:

 

public static Calendar getInstance()

{

// 调用createCalendar()创建日历

Calendar cal = createCalendar(TimeZone.getDefaultRef(), Locale.getDefault());

cal.sharedZone = true;

return cal;

}

public static Calendar getInstance(TimeZone zone)

{

// 调用createCalendar()创建日历

return createCalendar(zone, Locale.getDefault());

}

public static Calendar getInstance(Locale aLocale) {

// 调用createCalendar()创建日历

Calendar cal = createCalendar(TimeZone.getDefaultRef(), aLocale);

cal.sharedZone = true;

return cal;

}

public static Calendar getInstance(TimeZone zone,

Locale aLocale)

{

// 调用createCalendar()创建日历

return createCalendar(zone, aLocale);

}

private static Calendar createCalendar(TimeZone zone,

Locale aLocale)

{

// (01) 若地区是“th”,则返回BuddhistCalendar对象

// (02) 若地区是“JP”,则返回JapaneseImperialCalendar对象

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);

}

// (03) 否则,返回GregorianCalendar对象

return new GregorianCalendar(zone, aLocale);

}

当我们获取Calendar实例之后,就可以通过Calendar提供的一些列方法来操作日历。

猜你喜欢

转载自blog.csdn.net/ywl470812087/article/details/88706319